我和http://msdn.microsoft.com/en-us/library/bb332338.aspx将我的服务作为Windows服务托管。它安装得很好,但我想在"第一次故障"、"第二次故障"或"后续故障"时将恢复选项设置为"重新启动服务"。如何做到这一点?
这样做的选项并不简单,它们需要调用一些方法才能实现,http://www.codeproject.com/Articles/6164/A-ServiceInstaller-Extension-That-Enables-Recovery或者使用命令滚动自己的。
[DllImport("advapi32.dll", EntryPoint="ChangeServiceConfig2")]
public static extern bool
ChangeServiceFailureActions( IntPtr hService, int dwInfoLevel,
[ MarshalAs( UnmanagedType.Struct ) ] ref SERVICE_FAILURE_ACTIONS lpInfo );
[DllImport("advapi32.dll", EntryPoint="ChangeServiceConfig2")]
public static extern bool
ChangeServiceDescription( IntPtr hService, int dwInfoLevel,
[ MarshalAs( UnmanagedType.Struct ) ] ref SERVICE_DESCRIPTION lpInfo );
请参阅http://netcode.ru/dotnet/?lang=&katID=30&skatID=277&artID=7660获取更多信息
您可以从命令行使用sc.exe设置恢复选项。这个答案有一个很好的例子来说明如何使用C#:
安装Windows服务并执行恢复操作以重新启动