Классы .Net для управления службами на удаленной машине?
-
18-09-2019 - |
Вопрос
Да, я мог бы это погуглить, но я немного ленив.Мне нужно удаленно управлять службами Windows на другом компьютере.Позволяет ли мне это сделать класс ServiceController?Какие ограничения существуют?Могу ли я запустить/остановить/изменить данные «запуск от имени» удаленно, т.е. изменить пароль, срок действия которого истекает?
Я попытаюсь предоставить пользователям на работе панель веб-сайта ASP.Net для управления несколькими службами, которые запускаются на их локальном компьютере под их собственной учетной записью (все они являются локальными администраторами на своем компьютере).Он интегрирован с другими функциями, поэтому я не рассматриваю возможность создания дистрибутива, который можно было бы запускать для них локально.Для внесения изменений будет использоваться проверка подлинности Windows и выдавать себя за пользователя.С какими проблемами, если таковые имеются, я могу столкнуться при этом?
Ваше здоровье
Решение
var sc = new ServiceController("servicename", "othermachinename");
Учетной записи, на которой запущен код, потребуются административные разрешения на целевом компьютере, чтобы взаимодействовать со службой.Олицетворение сработает.Я использовал это только в достаточно строго контролируемой ситуации (т.е.запуск из учетной записи пользователя с теми же учетными данными на исходном/целевом компьютере), но, по моему опыту, все операции работают должным образом.
Если вы хотите изменить учетные данные службы и т. д., вам придется использовать WMI, что не так просто, как использование класса ServiceController.Дополнительную информацию см. в классе ManagementObject.
я нашел эта ссылка здесь описывается использование WMI для изменения учетных данных службы.
Другие советы
@MadSeb -
Как я сказал в своем другой пост:
если вы используете C# или VB.Net, используйте WMI
В противном случае, "СК", вероятно, лучший инструмент для использования из командной строки или файла .bat.