6

我有一项服务会在某些资源不可用时失败。我已将其配置为尝试重新启动两次,然后在第三次尝试时向我发送 SMS。不幸的是,windows 只为您提供了在一定天数后重置失败计数的选项,而我真的希望它在每三次失败时重置一次。问题是一旦服务再次运行,再发生一次故障将导致它发送另一条短信,甚至不会尝试重新启动服务。

所以我想在我的 SMS 脚本中包含一些代码来重置失败计数器。我找到了以下注册表位置:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\

其中包含失败操作的其他内容(二进制)设置,但据我所知没有计数器。

sc命令允许您查询各种内容,但也不返回失败计数。

理想情况下,我想要一种以编程方式查询/重置故障计数器的方法,但是命令行或注册表解决方案会很好(因为我可以编写脚本)。

4

2 回答 2

1

Win32 API 允许您指定失败计数在 X 秒后重置,而不是 X 天。查看 SERVICE_FAILURE_ACTIONS 结构的 dwResetPeriod 成员。

A 表示故障计数器本身,它在 SCM 内部私下维护,它知道自 Windows 启动以来给定服务失败的次数。应用程序无法访问该计数器以手动重置,甚至查询。

于 2009-12-09T00:51:51.370 回答
0

我是一个名为 Daemoniq 的开源 Windows 服务托管框架的开发人员。设置服务恢复选项是其功能之一。您可以从http://daemoniq.org下载它

当前功能包括:

  • 通过 CommonServiceLocator 与容器无关的服务位置
  • 通过 app.config 设置常用服务属性,如 serviceName、displayName、description 和 serviceStartMode
  • 在同一进程上运行多个 Windows 服务
  • 通过 app.config 设置恢复选项
  • 通过 app.config 设置依赖的服务
  • 通过命令行设置服务进程凭据
  • 通过命令行安装、卸载、调试服务
于 2009-12-10T18:54:37.940 回答