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