How to query user information from Active Directory? I have code that works, but it's really slow. I'm using C#. This is the code I currently use:
static void Main(string[] args) { SearchResultCollection sResults = null; try { //modify this line to include your domain name string path = "LDAP://EXTECH"; //init a directory entry DirectoryEntry dEntry = new DirectoryEntry(path); //init a directory searcher DirectorySearcher dSearcher = new DirectorySearcher(dEntry); //This line applies a filter to the search specifying a username to search for //modify this line to specify a user name. if you want to search for all //users who start with k - set SearchString to "k" dSearcher.Filter = "(&(objectClass=user))"; //perform search on active directory sResults = dSearcher.FindAll(); //loop through results of search foreach (SearchResult searchResult in sResults) { if (searchResult.Properties["CN"][0].ToString() == "Adit") { ////loop through the ad properties //foreach (string propertyKey in //searchResult.Properties["st"]) //{ //pull the collection of objects with this key name ResultPropertyValueCollection valueCollection = searchResult.Properties["manager"]; foreach (Object propertyValue in valueCollection) { //loop through the values that have a specific name //an example of a property that would have multiple //collections for the same name would be memberof //Console.WriteLine("Property Name: " + valueCollection..ToString()); Console.WriteLine("Property Value: " + (string)propertyValue.ToString()); //["sAMAccountName"][0].ToString(); } //} Console.WriteLine(" "); } } } catch (InvalidOperationException iOe) { // } catch (NotSupportedException nSe) { // } finally { // dispose of objects used if (sResults != null) sResults.Dispose(); } Console.ReadLine(); }
What would faster code look like to get user information from AD?
You can call UserPrincipal.FindByIdentity
inside System.DirectoryServices.AccountManagement
:
using System.DirectoryServices.AccountManagement; using (var pc = new PrincipalContext(ContextType.Domain, "MyDomainName")) { var user = UserPrincipal.FindByIdentity(pc, IdentityType.SamAccountName, "MyDomainName\\" + userName); }
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With