我已经在Windows上安装了许多我们自定义的书面服务(XP,Server,Vista无关紧要)。 我经常configuration为“重新启动服务”在第一,第二和其后的失败。 但是我从来没有见过这样的工作。 该服务只是停止(因为在代码中的错误或东西),但不会重新启动。
我只注意到“启用错误停止操作”checkbox。 如果失败是由错误引起的,为了使恢复生效,是否必须进行检查?
谢谢,马克。
如果您的服务由于错误而停止,那么窗口logging是,那么您需要勾选“启用错误停止的操作”,否则将无法工作。
如果您没有打勾,那么只会重新启动因合法或未知原因而停止的服务。
在Windows Vista和Windows Server 2008中引入了“为错误停止启用操作”checkbox,提供了单一的令人尴尬的文档 :
select启用带有错误的停止操作 ,以便触发服务因错误而停止的恢复操作。
SC.exe程序也进行了更新,以提供新的命令: failureflag
。 该文档显示了一个不好的例子,并不真正适用于Windows Server 2003,但告诉我们该命令:
指定当服务由于错误而停止时是否会触发恢复操作。
所以,checkbox和sc failureflag
标志用于设置相同的标志。
让我们在命令提示符下键入sc failureflag
,最后得到一个相当不错的描述:
更改服务的失败操作标志设置。 如果此设置为0(默认值),则服务控制pipe理器(SCM)只有在服务进程终止且服务处于SERVICE_STOPPED以外的状态时,才会在服务上启用configuration的失败操作。 如果此设置为1,则除了上述服务进程终止之外,如果服务进入SERVICE_STOPPED状态且Win32退出代码不是0,则SCM将启用configuration的服务失败操作。 如果服务没有configuration任何失败操作,则忽略此设置。
类似的描述可以在这里find。
因此,原始问题的正确答案是:configuration的恢复操作始终在您的服务未以SERVICE_STOPPED状态终止时生效。 假如退出代码不是0 (错误),则当您的服务进入SERVICE_STOPPED状态时,如果您还需要启用恢复操作,则必须选中“启用带有错误的停止操作”。