.Net классы для управления сервисами на удаленной машине? - PullRequest
1 голос
/ 21 июля 2009

Да, я мог бы погуглить, но я немного ленив. Мне нужно удаленно управлять службами Windows на другом компьютере. Позволяет ли мне класс ServiceController сделать это? Какие есть ограничения? Могу ли я запускать / останавливать / изменять данные «запуск от имени» удаленно, т.е. изменять пароль, срок действия которого истекает?

Я попытаюсь дать пользователям на рабочем месте инструментальную панель веб-сайта ASP.Net для управления несколькими службами, которые запускаются на их локальном компьютере под собственной учетной записью (все они являются локальными администраторами на своем компьютере). Это интегрировано с другими функциями, поэтому я не собираюсь создавать распространяемый файл, который мог бы работать для них локально. Будет использовать проверку подлинности Windows и выдавать себя за пользователя, чтобы внести изменения. С какими проблемами я могу столкнуться?

Приветствия

Ответы [ 2 ]

8 голосов
/ 21 июля 2009
var sc = new ServiceController("servicename", "othermachinename");

Учетная запись, выполняющая код, должна иметь права администратора на целевом компьютере для взаимодействия со службой. Подражание будет работать. Я использовал это только в довольно жестко контролируемой ситуации (т. Е. При запуске из учетной записи пользователя с одинаковыми учетными данными на исходных / целевых машинах), но по моему опыту все операции работают должным образом.

Если вы хотите изменить учетные данные службы и т. Д., Вам придется использовать WMI - что не так просто, как использование класса ServiceController. См. Класс ManagementObject для получения дополнительной информации.

Я нашел эту ссылку , которая описывает использование WMI для изменения учетных данных службы.

0 голосов
/ 02 ноября 2011

@ MadSeb -

Как я уже говорил в моем другом сообщении :

если вы используете C # или VB.Net, тогда используйте WMI

В противном случае « SC », вероятно, является лучшим инструментом для использования из командной строки или файла .bat.

...