设置在服务失败时执行的恢复操作

M S*_*kel 12 windows

我已经在 Windows 机器上安装了许多我们自定义的书面服务(XP、Server、Vista 都没有关系)。我总是在第一次、第二次和后续失败时配置为“重新启动服务”。但我从来没有看过这部作品;该服务只是停止(由于错误或代码中的某些内容)但不会重新启动。

我刚刚注意到“启用错误停止操作”复选框。如果故障是由错误引起的,是否必须进行检查才能使恢复生效?

谢谢,马克。

mat*_*pop 20

Windows Vista 和 Windows Server 2008 中引入了“启用错误停止操作”复选框,提供了一行令人尴尬的文档

选择对出现错误的停止启用操作以触​​发服务因错误而停止的恢复操作。

SC.exe的程序也被更新,以提供一个新的命令:failureflag。该文档显示了一个不好的例子,并不真正适用于 Windows Server 2003,但告诉我们该命令:

指定当服务因错误而停止时是否触发恢复操作。

因此,复选框 和sc failureflag用于设置相同的标志。
让我们sc failureflag在命令提示符中输入,我们终于得到了一个相当不错的描述:

更改服务的失败操作标志设置。如果此设置为 0(默认值),则服务控制管理器 (SCM) 仅在服务进程终止时服务处于非 SERVICE_STOPPED 状态时才启用对服务的已配置故障操作。如果此设置为 1,那么除了上述服务进程终止之外,如果服务进入 SERVICE_STOPPED 状态且 Win32 退出代码不是 0,则 SCM 会启用对服务的配置故障操作。如果服务没有配置任何故障操作,则忽略此设置。

可以在此处找到类似的描述。
因此,原始问题的正确答案是:当您的服务未在 SERVICE_STOPPED 状态下终止时,配置的恢复操作始终生效。如果在您的服务进入 SERVICE_STOPPED 状态时也需要启用恢复操作,则必须选中“启用错误停止操作”,前提是退出代码不是 0(错误)。

  • 感谢您提供非常有用的答案! (2认同)

Sam*_*gan 5

如果您的服务由于错误而停止,即由 Windows 记录,那么是的,您需要勾选“启用错误停止操作”,否则它将无法工作。

如果您没有勾选此项,那么它只会重新启动因合法或未知原因而停止的服务。

  • 微软的任何人写下这种语言都应该因为他们的无能而被无休止地鞭打。 (4认同)
  • 对于因“合法”原因停止的服务,永远不会触发任何恢复操作。这个答案仍然使“停止”和“失败”术语混淆。 (3认同)