AccueilOS WindowsAstuces et Trucs WindowsCréer Service Windows avec CMD et NSSM

Créer Service Windows avec CMD et NSSM

Cet article présente deux méthodes fiables pour créer un Service Windows : en utilisant l’Invite de commandes (CMD) et le Non-Sucking Service Manager (NSSM). Vous apprendrez étape par étape, les comparaisons de fonctionnalités et les meilleures pratiques du point de vue des techniciens et des joueurs. À la fin, vous pourrez transformer n’importe quelle application ordinaire en un service d’arrière-plan stable et automatisé.

Avez-vous déjà souhaité qu’un programme continue de fonctionner même lorsqu’aucun utilisateur n’est connecté ? Ou peut-être gérez-vous un serveur de jeu et avez-vous besoin qu’il reste actif sans laisser une session de bureau ouverte. La réponse est un Service Windows.

Un Service Windows est un programme spécial qui opère en coulisses du système d’exploitation. Il n’a pas de fenêtre, ni d’entrée dans la barre des tâches, et ne nécessite aucune interaction utilisateur. Les services sont contrôlés par le Gestionnaire de contrôle des services (SCM), qui se charge de démarrer, d’arrêter et de surveiller chaque service. Plus intéressant encore : vous pouvez configurer un service pour qu’il s’exécute dès le démarrage de l’ordinateur, même avant que vous ne vous connectiez.

Un joueur professionnel ou un technicien système ne peut pas ignorer la puissance des Services Windows. C’est le fondement de l’automatisation sur Windows.

Malheureusement, tous les programmes ne peuvent pas devenir directement un service. Les applications classiques échouent souvent car elles ne répondent pas correctement aux commandes d’arrêt ou de pause du SCM. Vous avez donc besoin de méthodes spécifiques. Les deux moyens les plus efficaces sont l’utilitaire intégré sc.exe (CMD) et l’outil tiers appelé NSSM. Chacun a ses avantages. Examinons-les un par un.

Qu’est-ce qu’un Service Windows et pourquoi en créer un ?

Techniquement, un Service Windows s’exécute dans une session non interactive spéciale (session 0) isolée du bureau de l’utilisateur. Cet isolement maintient le service actif même lorsque vous vous déconnectez ou changez d’utilisateur. Le SCM stocke chaque service dans le registre à HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services. Vous y trouverez le type de démarrage (automatique, manuel, désactivé), le compte d’exécution et les options de récupération en cas de panne.

Quand devriez-vous créer votre propre Service Windows ? Voici des scénarios courants pour les professionnels et les joueurs :

  • Exécuter des serveurs de jeu dédiés (Minecraft, Valheim, ARK) pour que le serveur reste en ligne 24h/24 sans bureau.
  • Automatiser des scripts de sauvegarde vers un NAS ou le cloud.
  • Surveiller les ressources réseau ou les températures des composants.
  • Exécuter des bots Discord ou Telegram en tant que services d’arrière-plan.
  • Adapter des applications héritées qui nécessitent un fonctionnement continu sans intervention humaine.

Avant de commencer, préparez le fichier exécutable (.exe) ou lot (.bat) que vous souhaitez transformer en service. Assurez-vous qu’il a été testé et fonctionne normalement en exécution directe. N’utilisez pas un fichier qui nécessite une saisie clavier continue, car un service n’a pas accès à un bureau interactif (sauf configuration spéciale).

Méthode 1 : Créer un Service Windows avec CMD (sc.exe)

L’Invite de commandes fournit un outil puissant nommé sc.exe (Contrôleur de services). Cet utilitaire est disponible depuis Windows XP et ne nécessite pas d’installation. Son inconvénient est que sc.exe ne prend pas en charge le redémarrage automatique et n’est pas adapté aux applications avec interface graphique. Cependant, pour des scénarios simples comme l’exécution de scripts batch ou d’applications console, cette méthode est très rapide.

Étapes détaillées avec CMD

1. Ouvrez CMD en tant qu’administrateur. Appuyez sur la touche Windows, tapez « cmd », faites un clic droit et sélectionnez « Exécuter en tant qu’administrateur ». Sans droits administrateur, sc.exe ne peut pas créer de service.

2. Tapez la syntaxe de base ci-dessous. Faites très attention aux espaces et aux guillemets.

sc.exe create <nom_service> displayname= <nom_affichage> binpath= <chemin_executable>

Explication des paramètres :

  • nom_service : Nom interne unique, sans espaces. Exemple : ServeurMinecraft.
  • nom_affichage : Le nom affiché dans Services.msc, peut contenir des espaces. Exemple : "Serveur Dédié Minecraft".
  • chemin_executable : Chemin complet vers le fichier exe ou bat. S’il y a des espaces, entourez-le de guillemets doubles. Exemple : "C:\Program Files\MonApp\serveur.exe".

3. Exécutez un exemple concret. Supposons que vous ayez un fichier C:\MonApplication.exe et que vous souhaitiez nommer le service « MonService ».

sc.exe create "MonService" displayname= "Mon Service" binPath= "C:\MonApplication.exe"

Remarquez l’espace après le signe égal dans displayname= et binpath=. C’est une règle de syntaxe stricte de sc.exe. Si vous écrivez displayname="Mon Service" sans espace, la commande échouera avec une erreur de syntaxe. Par conséquent, vous devez être précis.

Création d'un Service Windows avec la commande sc dans l'Invite de commandes
La commande sc.exe lors de la création d’un nouveau Service Windows

4. Vérifiez le service. Ouvrez Services.msc (appuyez sur Win+R, tapez services.msc). Recherchez le service avec le nom affiché « Mon Service ». Son état sera « Arrêté ». Faites un clic droit et choisissez Démarrer. Alternativement, utilisez la commande sc start MonService.

5. (Optionnel) Configurez le démarrage automatique. Pour que le service s’exécute au démarrage, exécutez :

sc config "MonService" start= auto

Inconvénient de la méthode CMD : sc.exe ne fournit pas de mécanisme pour redémarrer en cas de panne. Si votre application s’arrête soudainement, le service mourra et ne reviendra pas. Pour les besoins de production ou les serveurs de jeu nécessitant une haute disponibilité, vous avez besoin de NSSM.

Méthode 2 : Créer un Service Windows avec NSSM (Non-Sucking Service Manager)

NSSM est un outil open source conçu spécifiquement pour surmonter les « faiblesses » de sc.exe. Le nom « Non-Sucking » indique que cet outil n’est pas aussi pénible que la méthode intégrée. NSSM peut surveiller les processus enfants, redémarrer automatiquement et enregistrer la sortie console dans un fichier. Cet outil est le favori des techniciens de serveurs et des joueurs qui exécutent des serveurs de jeu moddés.

Étapes pour utiliser NSSM (avec interface graphique complète)

1. Téléchargez NSSM. Visitez le site officiel à nssm.cc/download. Choisissez la version 32 ou 64 bits correspondant à votre architecture Windows. Utilisez la dernière version (au moment de la rédaction, la 2.24).

2. Extrayez dans un dossier permanent. Par exemple, créez C:\nssm, puis extrayez le contenu du zip dedans. Un dossier win64 ou win32 apparaîtra. Ne le placez pas dans un dossier temporaire car le fichier sera utilisé en continu pendant l’exécution du service.

3. Ouvrez CMD en tant qu’administrateur. Déplacez-vous vers l’emplacement de nssm.exe. Exemple :

cd C:\nssm\win64

4. Lancez l’installateur graphique. Tapez la commande :

nssm install

Une fenêtre graphique s’ouvre. C’est le principal avantage de NSSM : vous n’avez pas besoin de mémoriser une syntaxe complexe.

Interface graphique NSSM pour créer facilement un Service Windows
Fenêtre de configuration NSSM : remplissez le chemin de l’exécutable, le répertoire et le nom du service

5. Remplissez l’onglet « Application ». Cette section est obligatoire :

  • Path : Cliquez sur le bouton « … » et cherchez votre fichier exe/bat.
  • Startup directory : Le dossier où l’application travaille (généralement le même que celui du fichier exe). Remplissez-le pour que l’application ne soit pas perdue lors de la recherche des fichiers de configuration.
  • Arguments : Si l’application nécessite des paramètres, par exemple --port 25565, écrivez-les ici.
  • Service name : Nom interne du service. Utilisez un nom unique sans espaces.

6. Ouvrez l’onglet « Details » (optionnel). Remplissez le Display name (nom affiché) et la Description. Cela vous aide à identifier le service dans Services.msc.

7. Ouvrez l’onglet « Exit actions » – c’est la partie la plus critique. NSSM vous permet de spécifier les actions lorsque l’application se ferme :

  • Restart always : Redémarre le service chaque fois qu’il meurt (quel que soit le code de sortie).
  • Restart if exit code != 0 : Redémarre uniquement si une erreur se produit.
  • Take no action : Meurt complètement, sans redémarrage.

Pour un serveur de jeu, choisissez « Restart always » avec un délai de 5 à 10 secondes. Ce procésus (typo: processus) garantit une disponibilité maximale.

8. Cliquez sur le bouton « Install service ». NSSM enregistrera le service auprès du SCM. Vous verrez un message « Service ‘nomservice’ installed successfully! ».

9. Vérifiez et démarrez le service. Ouvrez Services.msc, trouvez votre service et cliquez sur Démarrer. Alternativement, depuis CMD : nssm start nomservice. Pour voir la sortie console (stdout/stderr), ouvrez le dossier C:\nssm\logs par défaut.

Avantages de NSSM que vous devez connaître

  • Redémarrage automatique intelligent : Peut distinguer entre une sortie normale et un crash.
  • Journalisation complète : Tout ce que l’application imprime dans la console est sauvegardé dans un fichier.
  • Modification facile du service : Simplement nssm edit nomservice sans désinstallation.
  • Suppression sécurisée du service : nssm remove nomservice confirm.

Comparaison rapide : sc.exe vs NSSM

Aspectsc.exe (CMD)NSSM
DisponibilitéIntégré à Windows, sans installationDoit être téléchargé, extraction unique
Support du redémarrage automatiqueNon (nécessite une configuration complexe sc failure)Oui, très facile via l’interface graphique
Journalisation de la sortieNonOui, automatique dans un fichier
Facilité pour les débutantsNécessite de mémoriser la syntaxe et les espacesInterface graphique intuitive
Exécution d’applications avec interface graphiqueÉchoue souventPossible avec des paramètres spéciaux
Taille du fichier~50KB (intégré au système)~300KB
Comparaison des méthodes de création de Services Windows : sc.exe intégré vs NSSM

Si vous n’avez besoin que d’un service simple et que vous ne nécessitez pas de redémarrage automatique, sc.exe est suffisant. Cependant, pour une fiabilité élevée, en particulier pour les serveurs de jeu ou les bots critiques, NSSM est le bon choix.

Conseils pour gérer les Services Windows et les maintenir stables

Une fois votre service en cours d’exécution, vous devez le surveiller et le maintenir. Voici les meilleures pratiques de techniciens expérimentés :

  • Utilisez un compte avec des privilèges minimaux. N’utilisez pas LocalSystem si ce n’est pas nécessaire. Créez un compte dédié (par exemple svc_jeu) avec le droit « Ouvrir une session en tant que service ».
  • Configurez les options de récupération pour les services sc.exe : sc failure "nom" reset= 86400 actions= restart/5000/restart/10000/restart/30000. Cela redémarrera le service après 5 secondes en cas d’échec.
  • Surveillez les journaux périodiquement. Pour NSSM, les journaux sont stockés dans le sous-dossier logs. Pour sc.exe, vous devez rediriger vous-même la sortie de l’application vers un fichier.
  • Testez le service en mode console avant de l’installer. Assurez-vous que l’application s’exécute sans saisie utilisateur.
  • Documentez les changements de configuration. Conservez une documentation simple pour faciliter le dépannage.

Citation d’un praticien : « J’utilise NSSM pour exécuter un serveur communautaire Minecraft. Avec la configuration de redémarrage automatique, le serveur reste en ligne même lorsqu’il plante occasionnellement à cause de conflits de mods. Ma disponibilité a atteint 99,9 % au cours des 6 derniers mois. » – Andi, technicien de serveurs de jeu.

Conclusion : choisissez la méthode adaptée à vos besoins

Créer un Service Windows n’est pas compliqué si vous comprenez les deux méthodes principales. L’Invite de commandes (sc.exe) offre rapidité et absence d’installation, adapté aux scripts simples et aux techniciens qui aiment la ligne de commande. Pendant ce temps, NSSM fournit un redémarrage automatique, une journalisation et une facilité de configuration – idéal pour les serveurs de jeu, les bots ou les applications nécessitant une haute disponibilité.

Avec le guide étape par étape ci-dessus, vous avez maintenant les connaissances nécessaires pour transformer presque n’importe quelle application console ou batch en un Service Windows fiable. Testez toujours d’abord dans un environnement non productif. Bonne automatisation de votre système !

Besoin de références supplémentaires ? Consultez la documentation officielle de Microsoft sur le Gestionnaire de contrôle des services ou le forum NSSM pour plus de discussions.

Articles Récents