Installer le service Windows avec l’action de récupération pour redémarrer

J’installe un service Windows en utilisant les classes ServiceProcessInstaller et ServiceInstaller .

J’ai utilisé ServiceProcessInstaller pour définir le type de début, le nom, etc. Mais comment définir l’action de récupération sur Redémarrer?

Je sais que je peux le faire manuellement après l’installation du service en accédant à la console de gestion des services et en modifiant les parameters de l’onglet de récupération des propriétés du service, mais existe-t-il un moyen de procéder à l’installation?

Onglet Récupération de la propriété de service

Vous pouvez définir les options de récupération à l’aide de sc . Les éléments suivants définiront le service pour redémarrer après un échec:

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

Cela peut facilement être appelé depuis C #:

 static void SetRecoveryOptions(ssortingng 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 = ssortingng.Format("failure \"{0}\" reset= 0 actions= restart/60000", serviceName); process.Start(); process.WaitForExit(); exitCode = process.ExitCode; } if (exitCode != 0) throw new InvalidOperationException(); } 

Après plusieurs tentatives, je l’ai résolu en utilisant l’application de ligne de commande sc .

J’ai un fichier de commandes avec installutil et sc. Mon fichier de commandes est similaire à:

 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 

Si vous voulez la documentation complète de la commande sc, suivez ce lien: SC.exe: communique avec le contrôleur de service et les services installés

Remarque: Vous devez append un espace après chaque symbole égal (=). Exemple: reset = 300

Je ne pense pas que cela fasse partie de l’API .NET, mais cela pourrait aider:

Une extension ServiceInstaller qui permet la récupération et la configuration du démarrage automatique

Installez un service Windows comme vous le souhaitez! (Version C #)

J’ai trouvé le projet suivant qui prend en charge ces parameters, en utilisant uniquement des appels de code et d’API Win:
http://code.msdn.microsoft.com/windowsdesktop/CSWindowsServiceRecoveryPro-2147e7ac