2016-09-02 5 views
0

Ich möchte den Vornamen und Nachnamen des Benutzers, der in seinem Computer mit AD angemeldet ist abrufen. Ich verwende den folgenden Code ein:Suche Nachname und Vorname in AD

string server = ConfigurationManager.AppSettings["ActiveDirectory.Server"]; 

DirectoryEntry entry = new DirectoryEntry(@"LDAP://" + server); 
DirectorySearcher searcher = new DirectorySearcher(entry); 

User user = GetUser(entry); 

searcher.Filter = "sAMAccountName=" + user.UserAD; 
searcher.PropertiesToLoad.Add("memberof"); 
SearchResult result = searcher.FindOne(); 

private static User GetUser(DirectoryEntry userEntry) 
{ 
    Usuario user = new User(); 
    string[] username = HttpContext.Current.Request.ServerVariables["AUTH_USER"].Split('\\'); 

    //THIS IS WHAT I NEED BUT IT DOES RETURN null. 
    //User.Name= (string)userEntry.Properties["givenName"].Value; 
    //User.LastName= (string)userEntry.Properties["sn"].Value; 

    user.Domain = username[0]; 
    user.UserAD = username[1]; 

    return user; 
} 

Nun, ich weiß searcher.PropertiesToLoad habe einen [memberof] und [adspath], die letzte gibt mir den Vor- und Nachnamen mit einem Komma getrennt, so etwas wie CN="gates, billy" aber ich mag nicht Strings verwenden und index, gibt es irgendeine Eigenschaft wie [firstName], [lastName] in den Listeneigenschaften?

Ich suche tat DirectoryEntry eine Eigenschaft haben givenName und sn aber kehrt genannt null

Antwort

0

Der PropertiesToLoad Set ist genau das, was Sie ändern müssen. Active Directory gibt nur die Eigenschaften zurück, die in dieser Gruppe definiert sind. Daher werden givenName und sn nicht angezeigt. Fügen Sie einfach diese Eigenschaften auch:

searcher.PropertiesToLoad.Add("givenName"); 
searcher.PropertiesToLoad.Add("sn"); 

Alternativ nur die Eigenschaft hinzufügen * alle von ihnen zu laden:

searcher.PropertiesToLoad.Add("*"); 
Verwandte Themen