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