Как удаленно управлять службой Windows с помощью ServiceController? - PullRequest
19 голосов
/ 08 июня 2010

Я пытаюсь управлять службами Windows, которые установлены на удаленном компьютере. Я использую класс ServiceController.

У меня есть это:

ServiceController svc =  new ServiceController("MyWindowsService", "COMPUTER_NAME");

С этим я могу получить статус службы Windows следующим образом:

string status = svc.Status.ToString();

Но я не могу управлять службой Windows (выполнив svc.Start(); или svc.Stop();). Я получаю следующее исключение:

Не удается открыть службу Servicexxx на компьютер "COMPUTER_NAME"

Это нормально, я полагаю, что-то связано с разрешениями на доступ. Но как? Я посмотрел в Google, но не нашел то, что искал. Однако я часто читаю что-то, связанное с подражанием, но я не знаю, что это значит.

NB. На локальном и удаленном компьютерах установлена ​​Win XP Pro.

Ответы [ 3 ]

9 голосов
/ 08 июня 2010

Проблема решена.

Олицетворение заключается в запуске фрагмента кода с использованием определенного логина / пароля.Я нашел этот очень полезный проект: http://www.codeproject.com/KB/cs/svcmgr.aspx?display=Print, который мне очень помог!

7 голосов
/ 08 июня 2010

Запуск и остановка служб - это привилегированная операция, обычно доступная только администраторам. Убедитесь, что используемая учетная запись пользователя имеет достаточные права на целевом компьютере. Задайте больше вопросов об этом на serverfault.com

0 голосов
/ 22 октября 2013

Чтобы решить эту проблему, дайте своему имени права администратора на удаленном компьютере / сервере, такие как домен / имя пользователя, и вы сможете успешно запускать пакет, поскольку у меня была такая же проблема, и когда я давал разрешения для своих собственных служб,доступно на удаленном сервере

...