我正在使用ServiceProcessInstaller
和ServiceInstaller
类安装Windows服务.
我用了ServiceProcessInstaller
来设置开始类型、名称等,但用了how do I set the recovery action to Restart?
我知道在安装服务后,我可以通过转到服务管理控制台并更改服务属性的"恢复"选项卡上的设置来手动执行此操作,但在安装过程中是否有方法执行此操作?
我正在使用ServiceProcessInstaller
和ServiceInstaller
类安装Windows服务.
我用了ServiceProcessInstaller
来设置开始类型、名称等,但用了how do I set the recovery action to Restart?
我知道在安装服务后,我可以通过转到服务管理控制台并更改服务属性的"恢复"选项卡上的设置来手动执行此操作,但在安装过程中是否有方法执行此操作?
您可以使用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();
}