Install Windows Service with Recovery action to Restart

前端 未结 4 739
离开以前
离开以前 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 18:52

    I found the following project which takes care of these settings, using only code and Win API calls:
    http://code.msdn.microsoft.com/windowsdesktop/CSWindowsServiceRecoveryPro-2147e7ac

    0 讨论(0)
  • 2020-11-29 18:54

    After many attemps, I resolved it using sc command line app.

    I have batch file with installutil and sc. My batch file is similar to:

    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
    

    If you want the full documentation of sc command, follow this link: SC.exe: Communicates with the Service Controller and installed services

    Note: You need to add an space after each equal (=) symbol. Example: reset= 300

    0 讨论(0)
  • 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();
    }
    
    0 讨论(0)
  • 2020-11-29 19:18

    I don't think it's part of the .NET API, but this might help:

    A ServiceInstaller Extension That Enables Recovery and Autostart Configuration

    Install a Windows service the way YOU want to! (C# version)

    0 讨论(0)
提交回复
热议问题