23
juin
2026
Script pour redémarrer un service sous MS Windows
16:48

Script pour redémarrer un service sous MS Windows

23 juin 2026 16:48

Script de redémarrage d'un service (à ajouter au Planificateur de tâches) sous Windows.

Le service « Hasp Loader », qui charge les clés de licence réseau du logiciel financier 1C, affichait régulièrement un message d'erreur concernant une licence réseau manquante. La solution proposée par le support 1C consistait à redémarrer le service « Hasp Loader » quotidiennement via le Planificateur de tâches. Message : « Hasp Loader n'a plus de licences disponibles, utilisées lors de la connexion.» Il s'agit d'écrire un script pour arrêter et redémarrer le service « Hasp Loader ».

Vous trouverez ci-dessous le texte d'un script VBS (VB Shell) que j'ai développé pour redémarrer le service avec le nom spécifié dans la variable sName. Ce script utilise la programmation WMI (Windows Management Instrumentation). La licence est GPL.

On Error Resume Next
sName="Hasp Loader"
Set objService = GetObject _
("winmgmts:{impersonationLevel=impersonate}!\\.\root\CIMV2")
If Err.Number  0 Then
    WScript.Echo Err.Number & ": " & Err.Description
    WScript.Quit
End If

If sName="" Then
    WScript.Echo "The service name is empty."
    WScript.Quit
End If

For Each objS In objService.ExecQuery _
("Select * FROM Win32_Service WHERE Name ='" & sName & "'" )
    Exit For
Next
If IsObject (objS) Then 
 WScript.Echo objS.Name & " - StopService()"
 ret = objS.StopService()
 DebugPrint ret

 WScript.Sleep 1500 ` 1,5s

 WScript.Echo objS.Name & " - StartService()"
 ret = objS.StartService()
 DebugPrint ret

Else
 WScript.Echo sName & " - service not found"
End If

Sub  DebugPrint(number)
Select Case number
   Case 0
      WScript.Echo "Done!"
   Case 1
      WScript.Echo "Error. Not supported"
   Case 2
      WScript.Echo "Error. No user rights"
   Case 3
      WScript.Echo "Error. Depends"
   Case 4
      WScript.Echo "Error. Wrong request"
   Case 5
      WScript.Echo "Error. Wrong state"
   Case 6
      WScript.Echo "Error. Not started"
   Case 7
      WScript.Echo "Error. Timed out"
   Case 8
      WScript.Echo "Error. Unknown failure"
   Case 9
      WScript.Echo "Error. Wrong path"
   Case 10
      WScript.Echo "Error. Already started"
   Case 11
      WScript.Echo "Error. DB is locked"
   Case 12
      WScript.Echo "Error. Dependency is deleted"
   Case 13
      WScript.Echo "Error. Dependency not found"
   Case 14
      WScript.Echo "Error. Disabled"
   Case 15
      WScript.Echo "Error. No authenticity"
   Case 16
      WScript.Echo "Error. Uninstalling"
   Case 17
      WScript.Echo "Error. No exec process"
   Case 18
      WScript.Echo "Error. Dependency is cycled"
   Case 19
      WScript.Echo "Error. Already started by this name"
   Case 20
      WScript.Echo "Error. Bad chars in name"
   Case 21
      WScript.Echo "Error. Bad parameters"
   Case 22
      WScript.Echo "Error. Bad account"
   Case 23
      WScript.Echo "Error. Service exists"
   Case 24
      WScript.Echo "Error. Service is paused"
End Select
End Sub

Exécution d'un script dans l'invite de commandes Windows :

cscript.exe hasp.vbs

Exécution d'un script dans le Planificateur de tâches :

  • Tâche simple
  • Action : cscript.exe
  • Paramètre : //B hasp.vbs

Il est recommandé de spécifier le chemin d'accès complet aux fichiers, par exemple : C:\Windows\system32\cscript.exe et C:\Windows\hasp.vbs

et d'accorder les autorisations uniquement à l'administrateur, qui redémarrera le service à l'aide du Planificateur de tâches.


Sources :


La liste des codes de retour des méthodes StopService() et StartService() est donnée ci-dessous :

0 Requête acceptée.
1 Requête non prise en charge.
2 L’utilisateur ne dispose pas des autorisations requises.
3 Le service ne peut pas être arrêté car d’autres services en cours d’exécution en dépendent.
4 Le code de contrôle demandé est invalide ou inacceptable pour ce service.
5 Le code de contrôle demandé ne peut pas être envoyé au service car son état (Win32_BaseService. Propriété État) est 0, 1 ou 2.
6 Le service n’est pas en cours d’exécution.
7 Le service n’a pas répondu à la demande de démarrage dans le délai imparti.
8 Une erreur inconnue s’est produite lors du démarrage du service.
9 Le chemin d’accès au répertoire contenant l’exécutable du service est introuvable.
10 Le service est déjà en cours d'exécution.
11 La base de données permettant d'ajouter un nouveau service est verrouillée.
12 Une dépendance de ce service a été supprimée du système.
13 Ce service n'a pas trouvé un service requis par un service dépendant.
14 Ce service a été désactivé sur le système.
15 Ce service ne prend pas en charge l'authentification requise pour s'exécuter sur le système.
16 Ce service est en cours de suppression du système.
17 Le service ne dispose pas de thread d'exécution.
18 Le service présente des dépendances circulaires au démarrage.
19 Un service portant le même nom est déjà en cours d'exécution.
20 Le nom du service contient des caractères non valides.
21 Le service a reçu des paramètres non valides.
22 Le compte sous lequel ce service s'exécute est invalide ou ne dispose pas des autorisations nécessaires.
23 Le service existe dans la base de données des services disponibles sur le système.
24 Le service est actuellement suspendu sur le système.



Publications connexes