Alors, d’après ce que j’ai constaté, les services Windows sont parfois un peu étranges. Ils s’exécutent en arrière-plan, un peu comme des personnages invisibles, et démarrent généralement automatiquement au démarrage de Windows. Mais créer un nouveau service à partir d’un exécutable n’est pas toujours simple, surtout s’il n’est pas conçu pour cela. Si vous avez essayé d’exécuter votre application en tant que service et rencontré des erreurs (comme la classique erreur 1053), ce guide peut vous aider à trouver des solutions. Nous allons voir comment utiliser les outils intégrés comme sc.exe et New-Service, mais aussi comment les faire fonctionner avec des utilitaires tiers comme NSSM si l’application est récalcitrante ou difficile à gérer. C’est un peu fastidieux, mais… c’est faisable. Après tout, faire fonctionner correctement un exécutable non destiné aux services en tant que service est assez compliqué, mais avec les bonnes astuces, vous pouvez faire en sorte que votre application reste active en arrière-plan sans avoir à la surveiller constamment.
Comment créer ou gérer des services Windows
Méthode 1 : Utilisation de sc.exe pour la création rapide de services
C’est la solution idéale pour créer rapidement et facilement des services via la ligne de commande. Elle s’avère utile pour lancer un service à partir d’un simple exécutable avec quelques arguments, tout en contrôlant son type de démarrage. Cette méthode fonctionne bien avec les applications conçues comme des services, mais des erreurs peuvent parfois survenir, notamment si l’application n’a pas été développée en tenant compte de ce comportement.
Voici une commande typique que vous pourriez exécuter dans l’invite de commandes (exécutée en tant qu’administrateur) :
sc create CorpCollectorService binPath= "C:\Program Files (x86)\CORP\collector.exe -i C:\tools\config.xml" start= auto DisplayName= "CORP Log Collector Service"
Quelques points importants : assurez-vous d’insérer un espace après le signe égal, car Windows a parfois des petits problèmes avec ça. Une fois la commande exécutée, si tout se passe bien, vous devriez voir un message de confirmation :
[SC] CreateService SUCCESS
Maintenant, consultez le panneau Servicesservices.msc ( ) et actualisez F5la page. Le nouveau service devrait apparaître dans la liste ; vous pourrez alors le démarrer, l’arrêter ou modifier son comportement au démarrage.
Attention : si votre application n’est pas conçue pour fonctionner comme un service, elle risque de ne pas démarrer correctement ou de générer des erreurs au démarrage. Parfois, Windows rencontre des problèmes si votre application ne gère pas correctement les signaux de contrôle ou ne répond pas assez rapidement, ce qui peut déclencher l’erreur 1053. Dans ce cas, vous aurez peut-être besoin d’aide supplémentaire ou d’une autre approche.
Méthode 2 : Création d’un service avec la commande New-Service de PowerShell
C’est une méthode un peu plus moderne, surtout si vous utilisez des scripts ou souhaitez un contrôle plus précis. PowerShell facilite la spécification de détails comme la description ou le type de démarrage en une seule étape. Cependant, cette méthode n’est vraiment fiable que si l’application est conçue pour s’exécuter en tant que service.
Voici un exemple simple :
New-Service -Name CorpCollectorService -BinaryPathName "C:\Program Files (x86)\CORP\collector.exe -i C:\tools\config.xml" -DisplayName "my test service" -Description "CORP Log Collector Service" -StartupType "Automatic"
Si vous devez exécuter le service sous un compte utilisateur spécifique (c’est parfois nécessaire pour des raisons d’autorisation), vous pouvez procéder comme suit :
$username = "user123" $password = "PaSSw0rd1" $securepassword = ConvertTo-SecureString $password -AsPlainText -Force $cred = New-Object System. Management. Automation. PSCredential ($username, $securepassword) New-Service...-Credential $cred
Remarque : PowerShell avec droits d’administrateur est requis. Il est également conseillé de vérifier que le compte dispose des autorisations nécessaires et que le mot de passe est géré de manière sécurisée. En pratique, certains utilisateurs signalent que même avec des identifiants valides, le service ne démarre pas si l’application n’est pas compatible.
Option : Supprimer un service lorsqu’il n’est plus nécessaire
Parfois, la suppression du service est la solution la plus simple pour résoudre les problèmes ou faire du ménage. Pour ce faire, exécutez :
sc delete service_name
Remplacez service_name par le nom réel de votre service. Attention : si vous supprimez un service par erreur, vous risquez de perdre des données importantes.
Comment contourner les applications qui ne sont pas conçues pour être des services (une astuce de fortune mais utile)
C’est là que les choses se compliquent. Toutes les applications ne gèrent pas correctement les signaux de contrôle SCM (Service Control Manager) ni les commandes de démarrage/arrêt, ce qui peut entraîner des erreurs comme l’« Erreur 1053 ».Si votre application n’est pas conçue pour fonctionner comme un service, un outil pratique appelé NSSM ( Non-Sucking Service Manager ) permet à tout exécutable de s’exécuter en arrière-plan. Il agit comme un intermédiaire : il exécute votre application en tant que service, la surveille et peut même la redémarrer en cas de plantage.
Le processus d’installation est assez simple. Commencez par installer NSSM via WinGet :
winget install --id NSSM. NSSM -e
Ensuite, pour créer un service à partir de votre binaire, il suffit d’exécuter :
nssm install testservice "C:\Tools\collector.exe"
Ainsi, NSSM gère tous les aspects complexes. Il dispose également d’une interface graphique pour la configuration, vous permettant de modifier les paramètres de démarrage, les variables d’environnement et autres réglages sans utiliser la ligne de commande. Pour mettre à jour la configuration ou le binaire ultérieurement, il suffit d’exécuter :
nssm edit testservice
Sur certaines configurations, les outils officiels de Microsoft peuvent échouer avec les applications qui ne prennent pas en charge nativement le mode service. NSSM est la solution de dernier recours. De plus, il peut redémarrer automatiquement les applications plantées, ce qui est très pratique.
Certes, exécuter des applications arbitraires en tant que service n’est pas toujours une garantie de succès, surtout s’il s’agit d’applications graphiques ou interactives. Mais NSSM rend l’ensemble du processus beaucoup plus fiable, notamment pour les tâches en arrière-plan ou les scripts qui doivent rester actifs.
Honnêtement, c’est parfois un peu compliqué, mais ces astuces permettent généralement d’y arriver sans trop de difficultés. Bonne chance pour transformer vos applications en véritables machines de travail en arrière-plan !