разрешения servicecontroller - PullRequest
       10

разрешения servicecontroller

10 голосов
/ 16 декабря 2009

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

Класс servicecontroller даже не позволяет указывать какие-либо параметры аутентификации. Это правильно? Есть ли определенный набор привилегий, которые нужны пользователю, а не администратору, поскольку я неохотно добавляю всех пользователей веб-серверов в нашем кластере в качестве локальных администраторов на служебной машине?

1 Ответ

5 голосов
/ 19 мая 2011

Вам придется временно выдать себя за администратора для текущего потока, а затем вернуться обратно. Посмотрите WindowsIdentity.Impersonate () в MSDN.

ServiceController будет использовать принципала текущего потока для выполнения вызовов реестра и менеджера управления службами, и вы должны убедиться, что он установлен для пользователя-администратора, если вы хотите управлять службами. Недостатком является то, что вам нужно будет хранить пароль где-нибудь для учетной записи, убедитесь, что вы используете SecureString и не храните пароль в виде простого текста.

...