Поскольку вы находитесь на .NET 4 вы должны проверить пространство имен (S.DS.AM). Читайте об этом здесь:
В принципе, вы можете определить контекст домена и легко найти пользователей и/или групп в 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;
}
Если вы не можете найти пользователя, указанного по имени пользователя, вы также можете использовать новую функцию поиска:
// 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.....
}
Новый S.DS.AM позволяет очень легко играть с пользователями и группами в AD! И просто поиск одного пользователя тоже будет относительно быстрым.
большой помощи, я хочу, чтобы я мог принять все anwsers ваших ребят игровой – user1225072
@marc_s это было именно то, что я искал, идеально, спасибо. Однако я обнаружил, что, если какое-либо поле, которое вы запрашиваете у пользователя для поиска, не требуется, пропустите соответствующее свойство в 'UserPrincipal'. Я изначально нажимал 'string.empty', а затем даже« null »и получал ** no ** результаты. Однако, как только я добавил оператор 'if' и проигнорировал этот элемент в' UserPrincipal', у меня наконец были возвращены результаты (_ie: skipped ** GivenName **, когда ** FirstName ** не было заполнено, вместо настройки по умолчанию_). – famousKaneis