2010-11-09 2 views
1

Предложение C# или VB.NET приветствуется.Проверьте, что пользователь уже зарегистрировался в домене с помощью System.DirectoryServices.AccountManagemen

У меня есть компьютеры, подключенные к домену. Я пишу настольное приложение, запрашивающее имя пользователя и пароль для аутентификации пользователя в Active Directory. Иногда пользователь использует это приложение на компьютере, который не подключен к домену.

Я использую .NET 3.5, System.DirectoryServices и System.DirectoryServices.AccountManagement. Пример кода, как для аутентификации пользователей:

Private Function ValidateExternalUser(ByVal username As String, ByVal password As String) As Boolean 
    Using context As PrincipalContext = New PrincipalContext(ContextType.Domain, "your_domain_here") 
     Return context.ValidateCredentials(username, password, ContextOptions.Negotiate) 
    End Using 
End Function 

' from http://stackoverflow.com/questions/30861/authenticating-domain-users-with-system-directoryservices 

Я хочу знать, как проверить, если пользователь уже вошел в систему домена компьютера, то я не должен просить их снова войти в приложение.

Update

Если это не может быть сделано с System.DirectoryServices.AccountManagemen, есть ли способ сделать это? Спасибо

ответ

0

Я проверил System.Security.Principal.WindowsIdentity .GetCurrent.Name, и это дает мне

"домен \ имя пользователя"

С этой информацией и System.Security.Principal.WindowsIdentity.GetCurrent.IsAuthenticated, я думаю, я получаю то, что хочу.

0

Я не думаю, что вы можете сделать это с пространством имен S.DS.AM. Знание того, был ли пользователь зарегистрирован в домене, будет тем, что нужно обрабатывать на контроллере домена во время выполнения - S.DS.AM имеет отношение к статической информации (свойствам пользователя), а не к динамическим свойствам времени выполнения (кто вошел в систему).

+0

Если это невозможно сделать с помощью System.DirectoryServices.AccountManagemen, есть ли способ сделать это? благодаря – Narazana

1

Если устройство не подключено к домену, то свойство System.Environment.DomainName будет равно System.Environment.MachineName.

Смежные вопросы