Active Directory を使用しています。フィルターを使用して Active Directory からすべてのユーザーを取得しArrayList
、DropDownList
.
コード:
private ArrayList GetReceiverList(string Domain)
{
ArrayList List = new ArrayList();
DirectoryEntry Entry = new DirectoryEntry(Domain);
string filter = "(&(objectClass=user)(objectCategory=user)(!userAccountControl:1.2.840.113556.1.4.803:=2)(sn=*)(|(telephoneNumber=*)(mail=*))(cn=*))";
DirectorySearcher Searcher = new DirectorySearcher(Entry, filter);
foreach (SearchResult usr in Searcher.FindAll())
{
List.Add(GetLdapProperty(usr, "displayName"));
}
return List;
}
この作業と私は今使いたいと思っていますSystem.DirectoryServices.AccountManagement
。このために私はメソッドを書き、これも機能します。しかし、最初のメソッドでどのようにフィルターを使用したいのですか。どうすればこれを行うことができますか?
私の新しいメソッドのコード:
public static ArrayList GetAllActiveDirectoryUsersByDisplayName(string dc)
{
ArrayList list = new ArrayList();
PrincipalContext ctx = new PrincipalContext(ContextType.Domain, dc);
UserPrincipal u = new UserPrincipal(ctx);
u.Surname = "*";
PrincipalSearcher ps = new PrincipalSearcher(u);
PrincipalSearchResult<Principal> results = ps.FindAll();
foreach (UserPrincipal usr in results)
{
list.Add(usr.Name);
}
list.Sort();
return list;
}
アップデート:
新しいメソッドでこのフィルターを使用したい:
string filter = "(&(objectClass=user)(objectCategory=user)(!userAccountControl:1.2.840.113556.1.4.803:=2)(sn=*)(|(telephoneNumber=*)(mail=*))(cn=*))";