Как вы получаете текущий счетчик ошибок для службы 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
- установить учетные данные процесса обслуживания через командную строку
- устанавливать, удалять, отлаживать сервисы через командную строку
Спасибо!