2015-04-29 1 views
0

Мне нужно изменить пароль пользователя Windows на машине, которая подключена в той же сети. Для этого я соединяю машину с помощью метода PrincipalContext, затем получаю указанного пользователя и, наконец, изменяю пароль.Как проверить подключение к серверу при использовании PrincipalContext?

private bool ChangeUserPassword(string serverName,string serverip,string adminUserName, string adminUserPassword, string userName, string newIISPassword) 
    {         
      using (var context = new PrincipalContext(ContextType.Machine, serverName, adminUserName, adminUserPassword))     
      using (var user = UserPrincipal.FindByIdentity(context, IdentityType.SamAccountName, userName)) 
      { 
       user.SetPassword(newIISPassword); 
       user.Save(); 
      } 
} 

Проблема заключается в том, что иногда я не буду получать соединение с сервером, когда я обеспечиваю «ServerName», но работает с «ServerIP» и наоборот. Если он подключен, то context.ConnectedServer отобразит имя сервера, если оно не показывает неизвестный путь или неверную ошибку имени пользователя.

Если соединение не я мог бы использовать в качестве параметра ServerIP

using (var context = new PrincipalContext(ContextType.Machine, serverIp, adminUserName, adminUserPassword)) 

Для этого я попытался if(context.ConnectedServer != serverName) знать соединение не работает, и поставить выше код внутри it.but он возвращает ошибку, так как есть нет ConnectedServer.

Как я могу проверить подключение к серверу или нет?

ответ

0

Ваш DNS-сервер может быть не полностью настроен в вашей сети. Пожалуйста, используйте полное имя вашего компьютера.

Example of Full Computer Name

+0

Я разрабатываю это приложение для клиента. Я не могу настаивать на том, чтобы они делали это изменение в своей сети. Поэтому поиск решения на уровне кода - единственный вариант для меня прямо сейчас. – Nachikethas

+0

Я не говорю, чтобы вносить изменения в свою сеть. Я просто говорю, что они должны ввести/использовать ** полное имя компьютера **. –