Vraag Installeer Windows Service met herstelactie om opnieuw te starten


Ik installeer een Windows-service met behulp van de ServiceProcessInstaller en ServiceInstaller klassen.

Ik heb de ServiceProcessInstaller om het starttype, de naam, enz. in te stellen. Maar hoe stel ik de herstelactie in op Opnieuw starten?

Ik weet dat ik dit handmatig kan doen nadat de service is geïnstalleerd door naar de beheerconsole van Services te gaan en de instellingen op het tabblad Herstel van de eigenschappen van de service te wijzigen, maar is er een manier om dit tijdens de installatie te doen?

Service Property Recovery Tab


72
2017-10-27 20:23


oorsprong


antwoorden:


U kunt de herstelopties instellen met sc. Het volgende zal de service instellen om opnieuw op te starten na een fout:

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

Dit kan eenvoudig worden aangeroepen vanuit 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();
}

77
2017-07-29 19:07



Na veel pogingen heb ik het opgelost met sc opdrachtregel app.

Ik heb een batchbestand met installutil en sc. Mijn batchbestand is vergelijkbaar met:

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

Als je de volledige documentatie van sc-opdracht wilt, volg je deze link: SC.exe: Communiceert met de service-controller en geïnstalleerde services

Opmerking: u moet na elk gelijk (=) symbool een spatie toevoegen. Voorbeeld: reset = 300 


10
2018-02-06 17:18



Ik denk niet dat het onderdeel is van de .NET API, maar dit kan helpen:

Een ServiceInstaller-uitbreiding waarmee de configuratie van de Recovery en Autostart wordt ingeschakeld

Installeer een Windows-service zoals jij dat wilt! (C # -versie)


7
2017-10-27 20:26



Ik vond het volgende project dat zorgt voor deze instellingen, met alleen code en Win API-aanroepen:
http://code.msdn.microsoft.com/windowsdesktop/CSWindowsServiceRecoveryPro-2147e7ac


2
2017-07-02 11:32