我目前仍然开始了解Active Directory,我可以将域组添加到本地管理员组中,但我想了解如何处理这个问题:我需要在我的域中的正确容器中创建一台计算机,我理解如何实现这一点,但我不明白每当我通过代码在域中创建新计算机时,我能够如何实现'Everyone'ACL。
注意: 1.我不是要求代码,我想了解如何实现这一点,所以任何指导/文章都将受到高度赞赏,因为我似乎无法找到任何与我的案例相关的文章。 2.我使用Visual Basic在Visual Studio 2008中实现此目的。
感谢您提前回复,期待了解这一点。 :)
编辑1:找到了几种可能实现此目的的方法:powershell或组策略
答案 0 :(得分:0)
我找到了VB.net的替代方案
以下Visual Basic示例演示如何读取对象上的安全描述符。
Imports ActiveDS
Imports System.Collections
Dim ent As New DirectoryEntry("LDAP://CN=ComputerName,OU=container,DC=domain,DC=com")
Dim sd As SecurityDescriptor = CType(ent.Properties("ntSecurityDescriptor").Value,SecurityDescriptor)
Dim acl As AccessControlList = CType(sd.DiscretionaryAcl, AccessControlList)
Dim ace As AccessControlEntry
For Each ace In CType(acl, IEnumerable)
Console.WriteLine("Trustee: {0}", ace.Trustee)
Console.WriteLine("AccessMask: {0}", ace.AccessMask)
Console.WriteLine("Access Type: {0}", ace.AceType)
Next ace
以下Visual Basic示例向您展示如何将安全描述符写入对象。
Import ActiveDS
Dim usr As New DirectoryEntry("LDAP://CN=ComputerName,OU=container,DC=domain,DC=com")
Dim newAce = New AccessControlEntryClass()
Dim usrSD As SecurityDescriptor = CType(usr.Properties("ntSecurityDescriptor").Value, SecurityDescriptor)
Dim usrAcl As AccessControlList = CType(usrSD.DiscretionaryAcl, AccessControlList)
newAce.Trustee = "Anything"
newAce.AccessMask = - 1
newAce.AceType = 0
usrAcl.AddAce(newAce)
usrSD.DiscretionaryAcl = usrAcl
usr.Properties("ntSecurityDescriptor").Value = usrSD
usr.CommitChanges()
您必须在解决方案中添加引用。添加参考 - > COM - > Active DS类型库