Разрешения servicecontroller

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

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

1 ответ

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

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

Другие вопросы по тегам