0

Active Directory を使用しています。フィルターを使用して Active Directory からすべてのユーザーを取得しArrayListDropDownList.

コード:

 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=*))"; 
4

0 に答える 0