Я пытаюсь управлять Windows Services, который установлен в удаленном компьютере. Я использую ServiceController
класс.
У меня есть это:
ServiceController svc = new ServiceController("MyWindowsService", "COMPUTER_NAME");
С этим я могу получить состояние службы Windows как это:
string status = svc.Status.ToString();
Но я не могу управлять службой Windows (путем выполнения svc.Start();
или svc.Stop();
). Я получаю следующее исключение:
Не может открыть сервис Servicexxx на компьютер 'COMPUTER_NAME'
Это нормально, я предполагаю, что существует что-то, чтобы сделать с правами доступа. Но как? Я изучил Google, но не нашел то, что я искал. Однако я часто читал что-то связанное с олицетворением, но я не знаю то, что это означает.
NB: локальные и удаленные компьютеры оба выполняет Победу XP Pro.
Проблема решена.
Выдача себя за другое лицо заключается в запуске фрагмента кода с использованием определенного пароля для входа в систему. Я нашел этот очень полезный проект: http://www.codeproject.com/KB/cs/svcmgr.aspx?display=Print , который мне очень помог!
Запуск и остановка служб - это высокопривилегированная операция, обычно доступная только администраторам. Убедитесь, что используемая вами учетная запись пользователя обладает достаточными привилегиями на целевой машине. Задайте дополнительные вопросы об этом на serverfault.com