2014-01-08 4 views
1

Мне нужен код C# для проверки учетных данных Windows, возможно, учетная запись может быть локальной или учетной записью домена.проверка учетных данных Windows

Просьба дать некоторые идеи о том, как это сделать.

+1

Идея - используйте свою любимую поисковую систему (Google, Bing, ...) и введите название своего сообщения. –

+0

Я отредактировал ваш заголовок. Пожалуйста, смотрите: «Если вопросы включают« теги »в их названиях?] (Http://meta.stackexchange.com/questions/19190/), где консенсус« нет, они не должны ». –

ответ

4

В зависимости от используемой вами версии .NET. Если вы используете версию .NET, которая содержит System.DirectoryServices.AccountManagement вы можете сделать следующее:

bool valid = false; 

using (PrincipalContext context = new PrincipalContext(ContextType.Domain)) 
{ 
    valid = context.ValidateCredentials(username, password); 
} 

Изменение ContextType.Domain в ContextType.Machine для локальной машины. Вы также можете попытаться олицетворять пользователя, обратившись к Active Directory или попытавшись заставить логин в локальной системе использовать что-то вроде этого. Однако я бы порекомендовал вышеприведенный подход.

public bool IsAuthenticated(string server, string username, string password) 
{ 
    bool authenticated = false; 

    try 
    { 
     DirectoryEntry entry = new DirectoryEntry(server, username, password); 
     object nativeObject = entry.NativeObject; 
     authenticated = true; 
    } 
    catch (DirectoryServicesCOMException cex) 
    { 
     //not authenticated; reason why is in cex 
    } 
    catch (Exception ex) 
    { 
     //not authenticated due to some other exception [this is optional] 
    } 

    return authenticated; 
} 
Смежные вопросы