.net 安装带有恢复操作的Windows服务以重新启动

.net 安装带有恢复操作的Windows服务以重新启动,.net,windows-services,service,.net,Windows Services,Service,我正在使用ServiceProcessInstaller和ServiceInstaller类安装Windows服务 我已使用ServiceProcessInstaller设置启动类型、名称等。但是如何设置恢复操作以重新启动? 我知道我可以在安装服务后通过转到服务管理控制台并更改服务属性的“恢复”选项卡上的设置来手动执行此操作,但在安装过程中是否有方法执行此操作 我不认为它是.NET API的一部分,但这可能会有所帮助: 您可以使用设置恢复选项。以下内容将设置服务在发生故障后重新启动: sc f

我正在使用
ServiceProcessInstaller
ServiceInstaller
类安装Windows服务

我已使用
ServiceProcessInstaller
设置启动类型、名称等。但是如何设置恢复操作以重新启动?

我知道我可以在安装服务后通过转到服务管理控制台并更改服务属性的“恢复”选项卡上的设置来手动执行此操作,但在安装过程中是否有方法执行此操作


我不认为它是.NET API的一部分,但这可能会有所帮助:


您可以使用设置恢复选项。以下内容将设置服务在发生故障后重新启动:

sc failure [servicename] reset= 0 actions= restart/60000
这很容易从C#调用:


经过多次尝试后,我使用sc命令行应用程序解决了这个问题

我有installutil和sc的批处理文件。我的批处理文件类似于:

installutil.exe "path to your service.exe"
sc failure "your service name" reset= 300 command= "some exe file to execute" actions= restart/20000/run/1000/reboot/1000
如果需要sc命令的完整文档,请点击以下链接:


注意:需要在每个相等(=)符号后添加空格。示例:reset=300

我发现以下项目负责这些设置,仅使用代码和Win API调用:

请注意,如果服务名称包含空格,则需要在引号中包含服务名称。如果要在服务安装时从C#中的安装程序[]service install handler调用该名称,则可以将此调用插入“提交”事件处理程序,该事件处理程序将在服务出现在service Control Manager中后立即执行。不要将其放在“AfterInstall”事件管理器中,因为这在第一次将服务安装到机箱上时不会起作用。@Kevin Visual Studio的代码分析表明,对象不应被多次释放,process.Close()line是无用的。@JohnTube--已删除该进程。Close()Line请注意,有些人可能会觉得语法奇怪,但
reset=0
是正确的,而
reset=0
是不正确的。正确使用空格至关重要,
reset=
是一个参数,后跟空格,然后是
0
。您的链接已断开!链接起作用,这是最好的解决方案。在没有流程启动的情况下工作。
installutil.exe "path to your service.exe"
sc failure "your service name" reset= 300 command= "some exe file to execute" actions= restart/20000/run/1000/reboot/1000