Как удаленно управлять службой Windows с помощью ServiceController?

Я пытаюсь управлять службами 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.


person Amokrane Chentir    schedule 08.06.2010    source источник


Ответы (3)


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

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

person Amokrane Chentir    schedule 08.06.2010
comment
Это ненужная дыра в безопасности. Если пользователь этого приложения должен иметь доступ, он должен иметь учетные данные и войти в систему как этот пользователь. Что еще более важно, они должны просто иметь разрешения, назначенные группе, членом которой они являются. Это не решает проблему, это небезопасный обходной путь. См. ответ Ханса Пассанта и соответствующие комментарии. - person majinnaibu; 02.04.2015
comment
@majinnaibu Как тестер для организации, нам необходимо использовать учетную запись службы, определенную в Active Directory, и олицетворение для удаленного тестирования службы Windows. - person Su Llewellyn; 22.03.2018

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

person Hans Passant    schedule 08.06.2010

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

person GOOKI    schedule 22.10.2013