I use this code:
DirectoryEntry objEntry;
DirectorySearcher objSearchEntry;
SearchResultCollection objSearchResult;
string strFilter = "(&(objectCategory=User))";
objEntry = new DirectoryEntry(conOUPath, conUser, conPwd, AuthenticationTypes.Secure);
objEntry.RefreshCache();
objSearchEntry = new DirectorySearcher(objEntry);
objSearchEntry.Filter=strFilter;
objSearchEntry.SearchScope=SearchScope.Subtree;
objSearchEntry.CacheResults=false;
objSearchResult=objSearchEntry.FindAll();
Each time, it only return 1000 users, but there are 3000 users in that OU.
How can i find all of them ?
If you’re on .NET 3.5 or newer, you should check out the
PrincipalSearcherand a “query-by-example” principal to do your searching:If you haven’t already – absolutely read the MSDN article Managing Directory Security Principals in the .NET Framework 3.5 which shows nicely how to make the best use of the new features in
System.DirectoryServices.AccountManagementUpdate:
Of course, depending on your need, you might want to specify other properties on that “query-by-example” user principal you create:
Surname(or last name)DisplayName(typically: first name + space + last name)SAM Account Name– your Windows/AD account nameUser Principal Name– your “username@yourcompany.com” style nameYou can specify any of the properties on the
UserPrincipaland use those as “query-by-example” for yourPrincipalSearcher.Update #2: If you want to search just inside a given OU, you can define that OU in the constructor of the
PrincipalContext.