2012-03-05 1 views
2

Active Directoryの異なるグループに存在するユーザーを検索するコードがあります。Active Directoryのドメインユーザーにユーザーを表示させることはできませんか?

string sADPath = "LDAP://" + tbDomain.Text; 
string username = tbUsername.Text; 
string password = tbPassword.Text; 
DirectorySearcher mySearcher = new DirectorySearcher(directoryEntry); 


int MaxResults = Int32.MaxValue - 1; 


ComboBoxItem selectItem = (ComboBoxItem)ddlGroups.SelectedItem; 
String value = selectItem.Value; 

mySearcher.Filter = ("(&(objectCategory=person)(objectClass=User)(memberOf=" + value + "))"); 

mySearcher.SearchScope = SearchScope.Subtree; 


foreach (SearchResult temp in mySearcher.FindAll()) 
{ 
} 

このコードは一部のグループでは問題ありませんが、すべてでは機能しません。

たとえば、Domain Adminsの値は取得できますが、Domain Usersのユーザーは取得できません。

また、ユーザーフォルダのユーザーも取得できません。

FindAll()でドメインユーザーの値が0になりました。

答えて

3

異なる問題が発生しています。

Domain Usersというユーザーメンバーが見つからないという事実は、作成する新しいユーザーのデフォルトのプライマリグループがDomain Usersであるという事実によって説明されています。 primarygroupはmemberof属性には存在せず、primaryGroupID属性にあります。さらにprimaryGroupIDは、区別された名前ではなく、プライマリグループの相対識別子(RID)です。あなたが書いた答えにC#コードがあります:How to retrieve Users in a Group, including primary group users