Как обнаружить автоматический запуск службы NT - PullRequest
1 голос
/ 10 мая 2011

Я работаю над простым сервисом NT с приложением, которое будет следить за ним и отображать статус в панели задач.При запуске монитор проверяет, работает ли служба, и предлагает запустить ее, если это не так.Это нормально до перезагрузки, когда монитор запускается перед обслуживанием и предлагает запустить его, даже если он запустится автоматически.

При чтении документов я думал, что состояние будет отображаться как SERVICE_START_PENDINGпервое, что служба делает при входе в основную функцию сервиса, однако, кажется, что статус сообщается как SERVICE_STOPPED, если SCM не начал запуск сервиса.Есть ли способ определить, что служба начнет запускаться в ближайшее время?

Спасибо, J

Ответы [ 2 ]

2 голосов
/ 10 мая 2011

Я не думаю, что есть какой-либо способ предсказать, что менеджер службы управления будет делать в будущем.Однако я могу подумать о нескольких вещах, которые могут смягчить вашу ситуацию:

  • Периодически отслеживать состояние службы, а когда она переходит в «запуск», обновлять состояние значка соответствующим образом

  • Проверьте настройку автоматического запуска процесса, и если он установлен на автоматический, и ваша программа мониторинга только что запустилась, то отложите сообщение о том, что служба не работает (при условии, что онавероятно, скоро начнется).

1 голос
/ 10 мая 2011

Вы, вероятно, хотите и QueryServiceConfig, и QueryServiceConfig2(). Второй вызов необходим для получения данных SERVICE_CONFIG_DELAYED_AUTO_START_INFO.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...