Мне нужно изменить пароль пользователя 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.
Как я могу проверить подключение к серверу или нет?
Я разрабатываю это приложение для клиента. Я не могу настаивать на том, чтобы они делали это изменение в своей сети. Поэтому поиск решения на уровне кода - единственный вариант для меня прямо сейчас. – Nachikethas
Я не говорю, чтобы вносить изменения в свою сеть. Я просто говорю, что они должны ввести/использовать ** полное имя компьютера **. –