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

我正在使用ServiceProcessInstallerServiceInstaller类安装Windows服务。

我已经使用ServiceProcessInstaller设置启动types,名称等。但是, 如何将恢复操作设置为重新启动?

我知道我可以在安装服务之后手动完成,转到服务pipe理控制台并更改服务属性的恢复选项卡上的设置,但是有没有办法在安装过程中执行?

服务属性恢复选项卡

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

 sc failure [servicename] reset= 0 actions= restart/60000 

这可以很容易地从C#中调用:

 static void SetRecoveryOptions(string serviceName) { int exitCode; using (var process = new Process()) { var startInfo = process.StartInfo; startInfo.FileName = "sc"; startInfo.WindowStyle = ProcessWindowStyle.Hidden; // tell Windows that the service should restart if it fails startInfo.Arguments = string.Format("failure \"{0}\" reset= 0 actions= restart/60000", serviceName); process.Start(); process.WaitForExit(); exitCode = process.ExitCode; } if (exitCode != 0) throw new InvalidOperationException(); } 

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

我有installutil和sc的batch file。 我的batch file类似于:

 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命令的完整文档,请点击此链接: SC.exe:与服务控制器和安装的服务通信

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

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

启用恢复和自动启动configuration的ServiceInstaller扩展

以您想要的方式安装Windows服务! (C#版本)

我发现下面的项目只使用代码和Win API调用来处理这些设置:
http://code.msdn.microsoft.com/windowsdesktop/CSWindowsServiceRecoveryPro-2147e7ac