Ошибка 1312 при выполнении «netsh http add sslcert» из службы Windows - PullRequest
0 голосов
/ 08 марта 2019

У меня есть служба Windows с собственной REST-службой WCF, использующей HTTPS и сертификат. Все работает нормально, если я настраиваю сертификат вручную, запуская оболочку msdos с правами администратора и выполняя команду «netsh http add sslcert ....». И все работает нормально, если я выполню команду в приложении Windows Form со следующим кодом:

string arguments = String.Format("http add sslcert ipport={0}:{1} certstorename=MY certhash={2} appid={3}", ipAddress, tcpPort, Constants.CERTIFICATE_THUMBPRINT, guid);
var configProc = new ProcessStartInfo
{
    WindowStyle = ProcessWindowStyle.Hidden,
    CreateNoWindow = true,
    RedirectStandardOutput = true,
    UseShellExecute = false,
    WorkingDirectory = @"C:\Windows\System32",
    FileName = @"C:\Windows\System32\netsh.exe",
    Verb = "runas",
    Arguments = arguments
};

Process p = Process.Start(configProc);

Точно такой же код в службе Windows выдает ошибку 1312 «Указанный сеанс входа не существует. Возможно, он уже завершен».

Единственное существенное различие между этими двумя случаями заключается в том, что пользователь Windows выполняет код: в случае, если он не работает (служба Windows), это LocalSystem. В рабочем случае это обычный пользователь с правами администратора.

Просто чтобы дать вам полный портрет: мне нужно программно связать / отменить привязку сертификата, потому что мне нужно сделать IP-адрес и порт настраиваемым: службу можно остановить, изменить прослушиваемые ip и порт, а затем снова запустить , Я отключу сертификат, когда служба будет остановлена, и снова свяжу его с новым ip и портом, когда он снова запустится.

Большое спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...