[Code snippet] Obtaining Active Directory User Information Using System.DirectoryServices

Here’s a snippet I wrote recently to read a user’s information (name, phone etc.) from the active directory:

public static string GetUserInfo(string user, string propertyName)
{
    DirectoryEntry adRootDSE = new DirectoryEntry(“LDAP://rootDSE”);
    DirectoryEntry adRoot = new DirectoryEntry(“LDAP://” + (string)adRootDSE.Properties[“defaultNamingContext”].Value);
    DirectorySearcher searcher = new DirectorySearcher(adRoot);
    searcher.Filter = “(&(objectClass=user)(samAccountName=” + user + “))”;
    SearchResult result = searcher.FindOne();

    if (result == null)
        return “null”;

    ResultPropertyValueCollection values = result.Properties[propertyName];

    return ((values != null) && (values.Count > 0)) ? values[0].ToString() : “null”;
}

Example use for this function:

string firstName = ActiveDirectory.GetUserInfo(userName, “givenName”);
string middleName = ActiveDirectory.GetUserInfo(userName, “middleName”);
string lastName = ActiveDirectory.GetUserInfo(userName, “sn”);
string primaryMail = ActiveDirectory.GetUserInfo(userName, “mail”);
string secondaryMail = ActiveDirectory.GetUserInfo(userName, “otherMailbox”);
string phoneWork = ActiveDirectory.GetUserInfo(userName, “telephoneNumber”);
string phoneHome = ActiveDirectory.GetUserInfo(userName, “homePhone”);
string phoneMobile = ActiveDirectory.GetUserInfo(userName, “mobile”);
string phonePager = ActiveDirectory.GetUserInfo(userName, “pager”);
string fax = ActiveDirectory.GetUserInfo(userName, “facsimileTelephoneNumber”);
string www = ActiveDirectory.GetUserInfo(userName, “wwwHomePage”);
string company = ActiveDirectory.GetUserInfo(userName, “company”);
string department = ActiveDirectory.GetUserInfo(userName, “department”);

Security note:
This code requires Full Trust for the immediate caller and cannot be used by partially trusted code.

Update:
Note that DirectoryEntry implements IDisposable and I am not disposing them in my code.
I should have used using statements here…

You may also like...