Da du bist Auf .NET 4 sollten Sie den Namespace System.DirectoryServices.AccountManagement
(S.DS.AM) überprüfen. Lesen Sie mehr darüber hier:
Grundsätzlich können Sie einen Domain-Kontext definieren und einfach finden Benutzer und/oder Gruppen in AD:
// set up domain context
PrincipalContext ctx = new PrincipalContext(ContextType.Domain);
// find a user - by e.g. his "samAccountName", or the Windows user name or something
UserPrincipal user = UserPrincipal.FindByIdentity(ctx, "SomeUserName");
if(user != null)
{
// do something here....
string samAccountName = user.SamAccountName;
}
Wenn Wenn Sie keinen Benutzer mit einem Benutzernamen finden können, können Sie auch die neue Suchfunktion verwenden:
// define a "query-by-example" principal - here, we search for a UserPrincipal
// and with the first name (GivenName) and a last name (Surname)
UserPrincipal qbeUser = new UserPrincipal(ctx);
qbeUser.GivenName = firstName;
qbeUser.Surname = lastName;
// create your principal searcher passing in the QBE principal
PrincipalSearcher srch = new PrincipalSearcher(qbeUser);
// find all matches
foreach(var found in srch.FindAll())
{
// do whatever here - "found" is of type "Principal" - it could be user, group, computer.....
}
Das neue S.DS.AM macht es einfach, mit Benutzern und Gruppen in AD herumzuspielen! Und nur einen einzigen Benutzer zu finden, sollte auch relativ schnell sein.
großer Hilfe, wünsche ich, dass ich alle Ihre Jungen des anwsers – user1225072
@marc_s akzeptieren könnte das war genau das, was ich suchte, perfekt, danke. .. aber ich habe auf die harte Tour herausgefunden, dass, wenn ein Feld, das Sie vom Benutzer für die Suche angefordert haben, nicht benötigt wird, die entsprechende Eigenschaft im 'UserPrincipal' übersprungen wird. Ich habe ursprünglich "string.empty" und dann sogar "null" gedrückt und hatte ** no ** Ergebnisse zurückgegeben. Sobald ich jedoch eine 'if'-Anweisung hinzugefügt und dieses Element im 'UserPrincipal' ignoriert habe, wurden schließlich Ergebnisse zurückgegeben (_ie: übersprungen ** GivenName **, wenn der ** Vorname ** nicht ausgefüllt wurde, anstatt zu setzen zu Standard_). – famousKaneis