当我使用DirectoryServices"member"属性时,"Domain Users"组为空

Sql*_*yan 8 vb.net directoryservices active-directory

我正在使用以下代码来获取我的域中组的成员:

  Dim de As New DirectoryEntry("LDAP://" & GroupDN)

  For Each user As String In CType(de.Properties("member"), IEnumerable)

          GroupCollection.Add(Username, Username)

  Next
Run Code Online (Sandbox Code Playgroud)

我的问题是,当GroupDN(组的可分辨名称)是" CN = Domain Users,CN = Users,DC = Mydomain,DC = local "时,For ... Each循环不执行,当我检查时手动使用属性语句,它的计数为零.这似乎适用于我的域中的每个其他组,但"域用户"组应该包含所有人,并且它似乎包含任何人.

我已经检查过,该组在我的Windows AD工具中正确列出了所有人.我有什么明显的遗漏吗?另外,有没有更好的方法来获得一个团体的所有成员?

tva*_*son 9

除非您更改用户的主要组ID,否则该用户不会存储在Domain Users组的成员属性中,而是使用主要组ID设置为Domain Users RID来确定Domain Users中的成员身份.正常情况是Domain Users成员属性为空; 它需要您对默认的Active Directory实现进行一些更改,但事实并非如此.

Domain Users组使用基于用户的"主要组ID"的"计算"机制来确定成员资格,并且通常不将成员存储为多值链接属性.如果更改了用户的主要组,则他们在Domain Users组中的成员身份将写入该组的链接属性,并且不再计算.这适用于Windows 2000,并且对于Windows Server 2003没有更改.

参考