Сервер RP C недоступен. (Исключение из HRESULT: 0x800706BA) - C# ChangePassword - PullRequest
0 голосов
/ 17 июня 2020



Мне нужно автоматически изменить пароль пользователя домена на windows server 2012 r2.
По этой причине я создал приложение, которое в основном выполняет следующие операции:

var userPrincipal = PrincipalContextService.AcquireUserPricipal(principalContext, model.Username);
// Validate user credentials
if (principalContext.ValidateCredentials(model.Username, model.CurrentPassword) == false)
{
  LoggerService.printLogError(_logger, null, "user : " + model.Username + " error ValidateCredentials", Settings);
  throw new Exception(Settings.ClientSettings.Alerts.ErrorInvalidCredentials);
}
userPrincipal.ChangePassword(model.CurrentPassword, model.NewPassword);

система может подключиться к контроллеру домена (контроллер находится на другом компьютере), ей также удается проверить старый пароль, но при попытке установить новый пароль возникает ошибка:

System.DirectoryServices.AccountManagement.PrincipalOperationException: The RPC server is unavailable. (Exception from HRESULT: 0x800706BA) ---> System.Runtime.InteropServices.COMException: The RPC server is unavailable. (Exception from HRESULT: 0x800706BA)

Две машины защищены брандмауэром, но я читал, что при открытии портов 389 445 системная система должна работать.

Порт 389 соответствует службе LDAP, но я не знаю функции порта 445.

Можете ли вы назвать порт 445, для чего он нужен?
Можете ли вы дать мне другие операции, которые я могу выполнять на двух машинах, чтобы сработала операция смены пароля?

...