Я разрабатываю приложение для работы в фоновом режиме с помощью службы Windows.
Я создал службу благодаря учебному пособию по MSDN, а затем могу правильно запустить или остановить его.
Моему сервису также нужно выполнять пользовательские команды. Поэтому я реализовал метод " OnCustomCommand " в классе сервиса.
Я могу отправлять пользовательские команды выполнения с идентификатором команды от 128 до 255, соответственно всему, что я нашел в сети.
Моя проблема:
Я не могу выполнить команду на сервисе, когда он остановлен. ExecuteCommand()
выбрасывает System.InvalidOperationException
каждый раз, когда я звоню на serviceController
.
Cannot control <myservice> service on computer '.'
Этого не происходит, когда служба запущена.
MSDN говорит
Когда вы вызываете ExecuteCommand,
Статус услуги не меняется.
Если служба была запущена, статус
остается запущенным. Если служба была
остановлено, статус остается остановленным,
и т. д.
Так что я полагаю, что это действительно возможно для executeCommand
на остановленных сервисах.
Моя служба установлена как служба LocalSystem, а serviceController
запускается с правами администратора.
Кто-нибудь знает, как решить эту проблему?