Install Windows Service with Recovery action to Restart

前端 未结 4 738
离开以前
离开以前 2020-11-29 18:40

I\'m installing a Windows Service using the ServiceProcessInstaller and ServiceInstaller classes.

I\'ve used the ServiceProcessInstal

4条回答
  •  醉梦人生
    2020-11-29 19:17

    You can set the recovery options using sc. The following will set the service to restart after a failure:

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

    This can easily be called from 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();
    }
    

提交回复
热议问题