9

次のコードを使用して、ドメインのグループのメンバーを取得しています。

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

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

          GroupCollection.Add(Username, Username)

  Next

私の問題は、GroupDN(グループの識別名)が「CN = DomainUsers、CN = Users、DC = Mydomain、DC = local」の場合、For...Eachループが実行されないことです。プロパティステートメントを手動で指定すると、カウントはゼロになります。これは私のドメイン内の他のすべてのグループで機能するようですが、「ドメインユーザー」グループには全員が含まれている必要があり、誰も含まれていないようです。

確認したところ、グループはWindowsADツールに全員を正しくリストしています。私がここで見逃している明らかな何かがありますか?ちなみに、グループのすべてのメンバーを取得するためのより良い方法はありますか?

4

2 に答える 2

11

ユーザーのプライマリ グループ ID を変更しない限り、ユーザーはドメイン ユーザー グループのメンバー属性に格納されず、プライマリ グループ ID がドメイン ユーザー RID に設定されているという事実を利用して、ドメイン ユーザーのメンバーシップを決定します。通常、Domain Users メンバー属性は空です。そうならないようにするには、デフォルトの Active Directory 実装にいくつかの変更を加える必要があります。

Domain Users グループは、ユーザーの「プライマリ グループ ID」に基づいて「計算された」メカニズムを使用してメンバーシップを決定し、通常、メンバーを多値のリンクされた属性として保存しません。ユーザーのプライマリ グループが変更されると、Domain Users グループのメンバーシップがグループのリンクされた属性に書き込まれ、計算されなくなります。これは Windows 2000 に当てはまり、Windows Server 2003 でも変更されていません。

参照

于 2009-02-08T04:02:06.857 に答える