Как вы получаете текущий счетчик ошибок для службы Windows - PullRequest
4 голосов
/ 07 декабря 2009

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

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

HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \

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

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

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

Ответы [ 2 ]

0 голосов
/ 10 декабря 2009

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

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

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

Спасибо!

0 голосов
/ 09 декабря 2009

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

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

...