API: Usługi Windows

Funkcje do pobierania statusu, uruchamiania, zatrzymywania i ponownego uruchamiania usług Windows.

Rejestracja C++: regService(js).

Wymaga uruchomienia JsN.exe z uprawnieniami administratora.


Możliwe stany usługi

Stan (state) Kod (code) Opis
"running" 4 Usługa jest uruchomiona
"stopped" 1 Usługa jest zatrzymana
"start_pending" 2 Trwa uruchamianie
"stop_pending" 3 Trwa zatrzymywanie
"paused" 7 Wstrzymana
"pause_pending" 6 Przechodzi w stan wstrzymania
"continue_pending" 5 Wznawianie
"unknown" Nieznany stan

svc_status

svc_status(name: string) → object

Pobiera aktualny stan usługi.

Parametry:

Parametr Typ Opis
name string Systemowa nazwa usługi (nie nazwa wyświetlana)

Wynik:

Pole Typ Opis
state string Stan z powyższej tabeli
code number Numeryczny kod SERVICE_* (1–7)
pid number PID procesu usługi (0, jeśli nie działa)
error string Komunikat błędu lub ""

Przykład:

let s = svc_status("MyService");

if (s.error) {
    console.log("Błąd:", s.error);
} else {
    console.log("Stan:", s.state);  // "running"
    console.log("PID:", s.pid);      // 4321
}

svc_start

svc_start(name: string) → object

Uruchamia usługę.

Parametry:

Parametr Typ Opis
name string Systemowa nazwa usługi

Wynik:

Pole Typ Opis
ok bool true — polecenie uruchomienia wysłane pomyślnie
error string Komunikat błędu lub ""

Przykład:

let r = svc_start("MyService");
if (r.ok) {
    console.log("Usługa jest uruchamiana");
} else {
    console.log("Błąd uruchamiania:", r.error);
}

svc_stop

svc_stop(name: string) → object

Zatrzymuje usługę.

Parametry:

Parametr Typ Opis
name string Systemowa nazwa usługi

Wynik:

Pole Typ Opis
ok bool true — polecenie zatrzymania wysłane pomyślnie
error string Komunikat błędu lub ""

Przykład:

let r = svc_stop("MyService");
if (r.ok) {
    console.log("Usługa jest zatrzymywana");
} else {
    console.log("Błąd zatrzymania:", r.error);
}

svc_restart

svc_restart(name: string) → object

Ponownie uruchamia usługę: zatrzymaj → poczekaj na zakończenie (do 15 sek.) → uruchom.

Parametry:

Parametr Typ Opis
name string Systemowa nazwa usługi

Wynik:

Pole Typ Opis
ok bool true — usługa ponownie uruchomiona pomyślnie
error string Komunikat błędu lub ""

Przykład:

let r = svc_restart("MyService");
if (r.ok) {
    console.log("Usługa ponownie uruchomiona");
} else {
    console.log("Błąd ponownego uruchamiania:", r.error);
}

Pełny przykład: sprawdzanie stanu i automatyczne ponowne uruchamianie

let svcName = "MyService";

// Sprawdź stan
let s = svc_status(svcName);

if (s.error) {
    console.log("[BŁĄD] Nie udało się pobrać statusu:", s.error);
} else if (s.state === "stopped") {
    console.log("[OSTRZEŻENIE] Usługa jest zatrzymana, uruchamianie...");
    let r = svc_start(svcName);
    console.log("Wynik:", r.ok ? "OK" : r.error);

} else if (s.state === "running") {
    console.log("[OK] Usługa jest uruchomiona, PID:", s.pid);

    // Sprawdź, czy proces odpowiada
    let alive = proc_alive(s.pid);
    if (!alive.responding) {
        console.log("[OSTRZEŻENIE] Proces zawiesił się, ponowne uruchamianie usługi...");
        let r = svc_restart(svcName);
        console.log("Ponowne uruchomienie:", r.ok ? "OK" : r.error);
    }

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

Jak znaleźć systemową nazwę usługi

Systemową nazwę (nie nazwę wyświetlaną) można znaleźć:

  1. PowerShell: Get-Service | Where-Object { $_.DisplayName -like "*MyApp*" } | Select-Object Name
  2. Menedżer zadań: Zakładka Usługi → kolumna Nazwa
  3. services.msc: kliknij prawym przyciskiem myszy → Właściwości → pole Nazwa usługi