API: Windows-Dienste
Funktionen zum Abrufen des Status, Starten, Stoppen und Neustarten von Windows-Diensten.
C++-Registrierung: regService(js).
Erfordert, dass JsN.exe als Administrator ausgeführt wird.
Mögliche Dienstzustände
Zustand (state) |
Code (code) |
Beschreibung |
|---|---|---|
"running" |
4 | Dienst wird ausgeführt |
"stopped" |
1 | Dienst ist angehalten |
"start_pending" |
2 | Start wird ausgeführt |
"stop_pending" |
3 | Anhalten wird ausgeführt |
"paused" |
7 | Dienst angehalten |
"pause_pending" |
6 | Wird angehalten |
"continue_pending" |
5 | Wird fortgesetzt |
"unknown" |
— | Unbekannter Zustand |
svc_status
svc_status(name: string) → object
Ruft den aktuellen Zustand eines Dienstes ab.
Parameter:
| Parameter | Typ | Beschreibung |
|---|---|---|
name |
string | Systemname des Dienstes (nicht der Anzeigename) |
Ergebnis:
| Feld | Typ | Beschreibung |
|---|---|---|
state |
string | Zustand aus der obigen Tabelle |
code |
number | Numerischer SERVICE_*-Code (1–7) |
pid |
number | Prozess-ID (PID) des Dienstprozesses (0, wenn nicht ausgeführt) |
error |
string | Fehlermeldung oder "" |
Beispiel:
let s = svc_status("MyService");
if (s.error) {
console.log("Fehler:", s.error);
} else {
console.log("Zustand:", s.state); // "running"
console.log("PID:", s.pid); // 4321
}
svc_start
svc_start(name: string) → object
Startet einen Dienst.
Parameter:
| Parameter | Typ | Beschreibung |
|---|---|---|
name |
string | Systemname des Dienstes |
Ergebnis:
| Feld | Typ | Beschreibung |
|---|---|---|
ok |
bool | true — Startbefehl erfolgreich gesendet |
error |
string | Fehlermeldung oder "" |
Beispiel:
let r = svc_start("MyService");
if (r.ok) {
console.log("Dienst wird gestartet");
} else {
console.log("Startfehler:", r.error);
}
svc_stop
svc_stop(name: string) → object
Stoppt einen Dienst.
Parameter:
| Parameter | Typ | Beschreibung |
|---|---|---|
name |
string | Systemname des Dienstes |
Ergebnis:
| Feld | Typ | Beschreibung |
|---|---|---|
ok |
bool | true — Stoppbefehl erfolgreich gesendet |
error |
string | Fehlermeldung oder "" |
Beispiel:
let r = svc_stop("MyService");
if (r.ok) {
console.log("Dienst wird gestoppt");
} else {
console.log("Stoppfehler:", r.error);
}
svc_restart
svc_restart(name: string) → object
Startet einen Dienst neu: Stoppen → Warten auf Abschluss (bis zu 15 Sek.) → Starten.
Parameter:
| Parameter | Typ | Beschreibung |
|---|---|---|
name |
string | Systemname des Dienstes |
Ergebnis:
| Feld | Typ | Beschreibung |
|---|---|---|
ok |
bool | true — Dienst erfolgreich neu gestartet |
error |
string | Fehlermeldung oder "" |
Beispiel:
let r = svc_restart("MyService");
if (r.ok) {
console.log("Dienst neu gestartet");
} else {
console.log("Neustartfehler:", r.error);
}
Vollständiges Beispiel: Zustandsprüfung und automatischer Neustart
let svcName = "MyService";
// Zustand prüfen
let s = svc_status(svcName);
if (s.error) {
console.log("[FEHLER] Status konnte nicht abgerufen werden:", s.error);
} else if (s.state === "stopped") {
console.log("[WARNUNG] Dienst ist gestoppt, starte...");
let r = svc_start(svcName);
console.log("Ergebnis:", r.ok ? "OK" : r.error);
} else if (s.state === "running") {
console.log("[OK] Dienst wird ausgeführt, PID:", s.pid);
// Prüfen, ob der Prozess reagiert
let alive = proc_alive(s.pid);
if (!alive.responding) {
console.log("[WARNUNG] Prozess reagiert nicht, starte Dienst neu...");
let r = svc_restart(svcName);
console.log("Neustart:", r.ok ? "OK" : r.error);
}
} else {
console.log("[INFO] Zustand:", s.state);
}
So finden Sie den Systemnamen des Dienstes
Der Systemname (nicht der Anzeigename) kann wie folgt gefunden werden:
- PowerShell:
Get-Service | Where-Object { $_.DisplayName -like "*MyApp*" } | Select-Object Name - Task-Manager: Registerkarte "Dienste" → Spalte "Name"
- services.msc: Rechtsklick → Eigenschaften → Feld "Dienstname"