Как мне указать, что моя служба Windows не приостановлена?

#windows-services

#windows-services

Вопрос:

https://serverfault.com/questions/70028/pausing-a-not-pausable-service-pausing-a-not-pausable-service-from-the-command рассказывает о приостановке службы NOT_PAUSABLE. Как мне указать, что моя служба не может быть приостановлена с самого начала? Я хочу, чтобы моя служба поддерживала только операции запуска / остановки.

Ответ №1:

Когда вы создаете свой сервис, вы заполняете SERVICE_STATUS структуру. Вызывается одно из полей в структуре dwControlsAccepted . Один из вариантов для dwControlsAccepted этого есть SERVICE_ACCEPT_PAUSE_CONTINUE . Если вы не скажете, что поддерживаете паузу / продолжение, SCM сообщит, что это не поддерживает паузу / продолжение.

Ответ №2:

Проверка службы Windows :

например, проверка DNS-клиента

 Service keyname      : DNScache
Service Displayname  : DNS Client
 

ИСПОЛЬЗОВАНИЕ : SC — ЗАПРОС

ЗАПУСТИТЕ CMD (командная строка) > Введите:

 SC QUERY DNSCACHE
 

Результат:

 SERVICE_NAME: DNSCACHE
        TYPE               : 20  WIN32_SHARE_PROCESS
        STATE              : 4  RUNNING
                                (STOPPABLE,NOT_PAUSABLE,IGNORES_SHUTDOWN)
        WIN32_EXIT_CODE    : 0  (0x0)
        SERVICE_EXIT_CODE  : 0  (0x0)
        CHECKPOINT         : 0x0
        WAIT_HINT          : 0x0
 

Код состояния:

  • 4: Выполняется. Возможность остановки или приостановки зависит от самой службы
  • 7: приостановлено. Возможность остановки или приостановки зависит от самой службы. конечно, продолжаемый
  • 1: Остановлено. Уже остановлена, не может быть остановлена или приостановлена 😉

код

 SC GETKEYNAME **YOUR SERVICE**
SC GETDISPLAYNAME **YOUR SERVICE**   
SC                                   >> Showing Other Command Available 
 

[Забавно: я не могу получить имя ключа (SC GETKEYNAME) от DNS-клиента, но показываю отображаемое имя (SC GETDISPLAYNAME) из DNSCACHE]

Внимательно прочитайте вопрос еще раз по этой ссылке, я думаю, на него ответили 🙂

Службы Windows XP: http://ss64.com/nt/syntax-services.html

Ответ №3:

Я пришел к этому сообщению, пытаясь приостановить мою службу. Я смог установить это с помощью свойства CanPauseAndContinue в конструкторе моей службы.

https://docs.microsoft.com/en-us/dotnet/api/system.serviceprocess.servicebase.canpauseandcontinue?view=dotnet-plat-ext-3.1