Как вы получаете текущий счетчик ошибок для службы Windows

У меня есть сервис, который не работает, когда определенные ресурсы недоступны. Я настроил его, чтобы попытаться перезагрузить компьютер дважды, а затем отправить мне SMS с третьей попытки. К сожалению, окна дают вам возможность сбросить счетчик ошибок только через определенное количество дней, тогда как я действительно хочу, чтобы он сбрасывался при каждом третьем сбое. Проблема заключается в том, что после повторного запуска службы, еще один сбой приведет к тому, что он отправит другое SMS и даже не попытается перезапустить службу.

Поэтому я хочу включить в свой сценарий SMS некоторый код для сброса счетчика ошибок. Я нашел следующее местоположение реестра:

HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \

Который среди прочего содержит (двоичные) настройки для действий при сбое, но, насколько я могу судить, счетчик отсутствует.

sc Команда позволяет вам запрашивать все виды вещей, но также не возвращает счетчик ошибок.

В идеале я бы хотел запрограммировать запрос / сброс счетчика ошибок, но было бы неплохо использовать командную строку или реестр (так как я могу их написать).

2 ответа

Win32 API позволяет указывать счетчик ошибок, сбрасываемый через X секунд, а не X дней. Посмотрите на членов dwResetPeriod структуры SERVICE_FAILURE_ACTIONS.

А для самого счетчика отказов, который хранится в частном порядке в SCM, который знает, сколько раз произошел сбой данной службы с момента загрузки Windows. Этот счетчик недоступен для сброса приложений вручную или даже для запроса.

Я являюсь разработчиком платформы хостинга Windows с открытым исходным кодом под названием Daemoniq. Настройка параметров восстановления службы является одной из ее функций. Вы можете скачать его с http://daemoniq.org/

Текущие функции включают в себя:

  • расположение службы, независимой от контейнера, через CommonServiceLocator
  • установить общие свойства службы, такие как serviceName, displayName, description и serviceStartMode, через app.config
  • запускать несколько служб Windows в одном процессе
  • установить параметры восстановления через app.config
  • набор служб зависит от через app.config
  • установить учетные данные процесса обслуживания через командную строку
  • устанавливать, удалять, отлаживать сервисы через командную строку

Спасибо!

Другие вопросы по тегам