Menu Fermer

La commande SC pour configurer les services Windows

La commande sc est un outil de ligne de commande sur les systèmes d’exploitation Windows qui vous permet de gérer et de contrôler les services.
Elle permet de modifier la valeur des entrées d’un service dans le registre Windows et dans la base de données du Service Control Manager.
Ainsi, vous pouvez l’utiliser pour démarrer, d’arrêter, de mettre en pause, de redémarrer, d’interroger et de supprimer des services. La commande sc permet également de créer de nouveaux services et de configurer les services existants.

Dans ce tutoriel, je vous montre toutes les commandes pour apprendre à utiliser la commande SC de Windows.

La commande SC pour configurer les services Windows

Comment utiliser la commande SC pour configurer un service Windows

Lister les services et pilotes

Vous pouvez très facilement obtenir la liste des services et pilotes grâce à l’option type avec la commande SC.

Pour énumérer uniquement les services Win32.

sc query type=service

Cela affiche le nom, le nom complet, le type, le statut du service et d’autres informations.

Lister les services et pilotes avec la commande sc de Windows

Pour énumérer uniquement les pilotes actifs.

sc query type= driver

Pour énumérer tous les services et pilotes.

sc query state= all

Pour lister des services avec leur statut respectif, filtrez les lignes avec la commande findstr :

sc query state= all | findstr "SERVICE_NAME STATE"
Lister les services et pilotes avec la commande sc de Windows

Pour une sortie plus propre :

for /f "tokens=2" %s in ('sc query state^= all ^| find "SERVICE_NAME"') do @(for /f "tokens=4" %t in ('sc query %s ^| find "STATE "') do @echo %s is %t)

Obtenir le nom complet d’un service

Vous pouvez aussi obtenir le nom complet (DisplayName) d’un service avec le paramètre GetDisplayName.
La syntaxe est la suivante :

sc GetDisplayName schedule

Par exemple, cela retourne comme nom complet le Planificateur de tâches :

[SC] GetServiceDisplayName réussite(s)
Name = Planificateur de tâches
Obtenir le nom complet d'un service avec la commande sc de Windows

Obtenir la configuration d’un service

Pour afficher l’état d’un service, vous pouvez utiliser l’option query :

sc query eventlog

Voici le résultat qui comprend le type de démarrage, les dépendances et le chemin complet de l’exécutable qui exécute le service.

SERVICE_NAME: eventlog
TYPE : 30 WIN32
STATE : 4 RUNNING
(STOPPABLE, NOT_PAUSABLE, ACCEPTS_SHUTDOWN)
WIN32_EXIT_CODE : 0 (0x0)
SERVICE_EXIT_CODE : 0 (0x0)
CHECKPOINT : 0x0
WAIT_HINT : 0x0
Afficher le statut complet d'un service avec la commande sc

Pour afficher l’état étendu d’un service, utilisez l’option queryex :

sc queryex eventlog

Cette dernière affiche en plus la colonne PID et FLAGS.

Enfin pour afficher la description d’un service, utilisez l’option qdescription :

sc qdescription Spooler

Démarrer un service

Pour démarrer un service, il faut utiliser le paramètre start suivi du nom du suivi.
Par exemple, pour démarrer le service schedule lié aux tâches planifiées de Windows.

sc start schedule

Pour modifier le statut d’un service, vous devez ouvrir Windows Terminal ou l’invite de commandes en administrateur, sinon vous obtenez cette erreur : [SC] OpenService échec(s) 5 : Accès refusé.
Cette erreur se produit aussi lorsque vous tentez de modifier un service système de Windows.

Arrêter un service

Le paramètre stop vous permet d’arrêter un service Windows en cours d’exécution.
Il vous suffit de spécifier le nom du service.
Par exemple, pour arrêter le service de tâche planifiée de Windows.

sc stop schedule

Mettre en pause un service

Vous pouvez aussi mettre en pause un service. Le processus reste en mémoire mais il n’est plus actif.
Ensuite vous pouvez simplement réactiver le service.

Lorsque vous redémarrez un service en pause avec la commande continue, le service commence là où il s’est arrêté (notez que certains services ne peuvent pas être mis en pause).

sc pause <nom service>
sc continue <nom service>

Supprimer un service

Sc peut aussi s’utiliser pour supprimer un service Windows avec l’option delete.
Par exemple, pour supprimer le service schedule :

SC delete schedule

Changer le type de démarrage

Par exemple pour désactiver un service :

SC config wuauserv start= disabled

Cela doit renvoyer :

[SC] ChangeServiceConfig réussite(s)

Créer un service

La commande vous donne la possibilité de créer un nouveau service Windows, grâce à SC create.
De nombreux paramètres sont à fournis, comme le nom du service, le type, l’utilisateur etc.
Voici un exemple d’utilisation de Sc create :

sc create EndecaServer displayname= "Mon Service" type= own error= severe obj= "MonPC\MonSuer" password= kevin123 binpath= "C:\monappli\monapplication.exe"
Option Name/ValuesMeaning
type= <serviceType>Le type de service à créer. Utilisez la valeur du paramètre own, ce qui signifie que le service s’exécute dans son propre processus. Il ne partage pas de fichier exécutable avec d’autres services. Il s’agit de la valeur par défaut de la commande sc create. D’autres types de services sont disponibles, mais vous devez utiliser la valeur own.
start= <startType>Le type de démarrage du service :
auto – Un service qui démarre automatiquement à chaque redémarrage de l’ordinateur.
demand – Un service qui doit être démarré manuellement. Il s’agit de la valeur par défaut si start= n’est pas spécifié. demand correspond à Manual dans le gestionnaire de contrôle des services.
delayed-auto -Le SCM prend en charge les services à démarrage automatique différé afin d’améliorer les performances du système au démarrage sans affecter l’expérience de l’utilisateur. Le SCM dresse une liste des services à démarrage automatique différé pendant le démarrage et les démarre un par un une fois le délai écoulé, en respectant les dépendances. Il n’y a pas de garantie de temps spécifique quant au moment où le service sera démarré
disabled – Un service qui ne peut pas être démarré. Pour démarrer un service désactivé, remplacez le type de démarrage par une autre valeur de démarrage
error= <errorSeverity>Gravité de l’erreur si le service ne démarre pas au démarrage :
normal – L’erreur est enregistrée et une boîte de message s’affiche pour informer l’utilisateur qu’un service n’a pas démarré. Le démarrage du système se poursuit. Il s’agit du paramètre par défaut. severe – L’erreur est consignée (si possible). L’ordinateur tente de redémarrer avec la dernière configuration connue. L’ordinateur peut alors redémarrer, mais le service risque de ne pas pouvoir s’exécuter.
critical – L’erreur est consignée (si possible). L’ordinateur tente de redémarrer avec la dernière configuration connue. Si la dernière configuration connue échoue, le démarrage du système échoue également et le processus de démarrage s’arrête avec une erreur Stop.
ignore – L’erreur est consignée et le démarrage se poursuit. Aucune notification n’est donnée à l’utilisateur en dehors de l’enregistrement de l’erreur dans le journal des événements.
group= <loadOrderGroup>Nom du groupe dont ce service est membre. La liste des groupes est stockée dans le registre sous la clé ServiceGroupOrder. La valeur par défaut est null.
tag= yes|noNe pas utiliser ce paramètre car les balises ne sont utilisées que pour les types de services des pilotes de périphériques.
depend= <dependencies>Noms des services ou des groupes qui doivent démarrer avant ce service. Chaque nom est séparé par / (barre oblique).
obj= <accountName>Nom du compte sous lequel le service sera exécuté. Le compte spécifié doit exister et être un compte valide. La valeur par défaut est LocalSystem.
password= <password>Mot de passe du compte utilisateur.
Un mot de passe est requis si un compte autre que le compte LocalSystem est utilisé.
displayname= <displayName>Un nom convivial et significatif qui peut être utilisé dans les programmes d’interface utilisateur pour identifier le service auprès des utilisateurs.
Par exemple, si le nom du service est MonService, vous pouvez spécifier “Mon Service Personnelle” comme nom d’affichage afin qu’il soit plus significatif lorsqu’il est affiché dans le gestionnaire de contrôle des services Windows.
Les paramètres de sc create

Utiliser la commande SC sur un ordinateur distant

Vous pouvez utiliser SC pour interroger ou configurer les services d’un ordinateur distant.
Pour cela, spécifiez le nom de l’ordinateur avant l’option en respectant la syntaxe suivante :

sc \\nomordinateur <option> <commande>

Par exemple :

sc \\nomordinateur query

La plupart des commandes précédentes fonctionnent à distance.