API : Services Windows

Fonctions pour obtenir le statut, démarrer, arrêter et redémarrer les services Windows.

Enregistrement C++ : regService(js).

Nécessite que JsN.exe soit exécuté en tant qu'administrateur.


États de service possibles

État (state) Code (code) Description
"running" 4 Le service est en cours d'exécution
"stopped" 1 Le service est arrêté
"start_pending" 2 Démarrage en cours
"stop_pending" 3 Arrêt en cours
"paused" 7 Service en pause
"pause_pending" 6 Transition vers la pause
"continue_pending" 5 Reprise en cours
"unknown" État inconnu

svc_status

svc_status(name: string) → object

Obtient l'état actuel d'un service.

Paramètres :

Paramètre Type Description
name string Nom système du service (pas le nom d'affichage)

Résultat :

Champ Type Description
state string État du tableau ci-dessus
code number Code numérique SERVICE_* (1–7)
pid number PID du processus du service (0 si non exécuté)
error string Message d'erreur ou ""

Exemple :

let s = svc_status("MyService");

if (s.error) {
    console.log("Erreur :", s.error);
} else {
    console.log("État :", s.state);  // "running"
    console.log("PID :", s.pid);      // 4321
}

svc_start

svc_start(name: string) → object

Démarre un service.

Paramètres :

Paramètre Type Description
name string Nom système du service

Résultat :

Champ Type Description
ok bool true — commande de démarrage envoyée avec succès
error string Message d'erreur ou ""

Exemple :

let r = svc_start("MyService");
if (r.ok) {
    console.log("Le service démarre");
} else {
    console.log("Erreur de démarrage :", r.error);
}

svc_stop

svc_stop(name: string) → object

Arrête un service.

Paramètres :

Paramètre Type Description
name string Nom système du service

Résultat :

Champ Type Description
ok bool true — commande d'arrêt envoyée avec succès
error string Message d'erreur ou ""

Exemple :

let r = svc_stop("MyService");
if (r.ok) {
    console.log("Le service s'arrête");
} else {
    console.log("Erreur d'arrêt :", r.error);
}

svc_restart

svc_restart(name: string) → object

Redémarre un service : arrêt → attente de la fin (jusqu'à 15 sec) → démarrage.

Paramètres :

Paramètre Type Description
name string Nom système du service

Résultat :

Champ Type Description
ok bool true — service redémarré avec succès
error string Message d'erreur ou ""

Exemple :

let r = svc_restart("MyService");
if (r.ok) {
    console.log("Service redémarré");
} else {
    console.log("Erreur de redémarrage :", r.error);
}

Exemple complet : vérification d'état et redémarrage automatique

let svcName = "MyService";

// Vérifier l'état
let s = svc_status(svcName);

if (s.error) {
    console.log("[ERREUR] Échec de l'obtention du statut :", s.error);
} else if (s.state === "stopped") {
    console.log("[ALERTE] Le service est arrêté, démarrage...");
    let r = svc_start(svcName);
    console.log("Résultat :", r.ok ? "OK" : r.error);

} else if (s.state === "running") {
    console.log("[OK] Le service est en cours d'exécution, PID :", s.pid);

    // Vérifier si le processus répond
    let alive = proc_alive(s.pid);
    if (!alive.responding) {
        console.log("[ALERTE] Le processus est bloqué, redémarrage du service...");
        let r = svc_restart(svcName);
        console.log("Redémarrage :", r.ok ? "OK" : r.error);
    }

} else {
    console.log("[INFO] État :", s.state);
}

Comment trouver le nom système d'un service

Le nom système (pas le nom d'affichage) peut être trouvé :

  1. PowerShell : Get-Service | Where-Object { $_.DisplayName -like "*MyApp*" } | Select-Object Name
  2. Gestionnaire des tâches : Onglet Services → Colonne Nom
  3. services.msc : clic droit → Propriétés → Champ Nom du service