Какой самый простой и эффективный способ в C # проверить, существует ли имя учетной записи пользователя Windows? Это в доменной среде.
- Ввод: имя пользователя в формате [домен] / [пользователь] (например, «mycompany \ bob»)
- Вывод: True, если имя пользователя существует, и false, если нет.
Я нашел эту статью , но примеры там относятся к аутентификации и манипулированию учетными записями пользователей, и они предполагают, что у вас уже есть отличительное имя пользователя, тогда как я начинаю с имени учетной записи пользователя.
Я уверен, что могу понять это с помощью AD, но прежде чем я это сделал, мне было интересно, есть ли простой API более высокого уровня, который делает то, что мне нужно.
* ОБНОВЛЕНИЕ *
Вероятно, есть много способов сделать это, Расс опубликовал один, который мог бы работать, но я не мог понять, как настроить его для работы в моей среде. Я нашел другой подход, используя провайдера WinNT, который сделал эту работу за меня:
public static bool UserInDomain(string username, string domain)
{
string path = String.Format("WinNT://{0}/{1},user", domain, username);
try
{
DirectoryEntry.Exists(path);
return true;
}
catch (Exception)
{
// For WinNT provider DirectoryEntry.Exists throws an exception
// instead of returning false so we need to trap it.
return false;
}
}
приписка
Для тех, кто не знаком с API, использованным выше: вам нужно добавить ссылку на System.DirectoryServices, чтобы использовать его.
Ссылка, которую я нашел, которая помогла мне в этом: Как я могу получить информацию о пользователе, используя ADSI
В примерах используется ADSI, но его можно применять и к .NET DirectoryServices. Они также демонстрируют другие свойства пользовательского объекта, которые могут быть полезны.