API: Windows-palvelut
Funktioita Windows-palvelun tilan tarkistamiseen, käynnistämiseen, pysäyttämiseen ja uudelleenkäynnistämiseen.
C++-rekisteröinti: regService(js).
Vaaditaan, että JsN.exe ajetaan järjestelmänvalvojana.
Mahdolliset palvelutilat
Tila (state) |
Koodi (code) |
Kuvaus |
|---|---|---|
"running" |
4 | Palvelu on käynnissä |
"stopped" |
1 | Palvelu on pysäytetty |
"start_pending" |
2 | Käynnistys käynnissä |
"stop_pending" |
3 | Pysäytys käynnissä |
"paused" |
7 | Palvelu on keskeytetty |
"pause_pending" |
6 | Siirtymässä keskeytettyyn tilaan |
"continue_pending" |
5 | Jatkaminen käynnissä |
"unknown" |
— | Tuntematon tila |
svc_status
svc_status(name: string) → object
Hakee palvelun nykyisen tilan.
Parametrit:
| Parametri | Tyyppi | Kuvaus |
|---|---|---|
name |
string | Palvelun järjestelmänimi (ei näyttönimi) |
Tulos:
| Kenttä | Tyyppi | Kuvaus |
|---|---|---|
state |
string | Tila yllä olevasta taulukosta |
code |
number | Numeerinen SERVICE_*-koodi (1–7) |
pid |
number | Palvelun prosessin PID (0, jos ei käynnissä) |
error |
string | Virheilmoitus tai "" |
Esimerkki:
let s = svc_status("MyService");
if (s.error) {
console.log("Virhe:", s.error);
} else {
console.log("Tila:", s.state); // "running"
console.log("PID:", s.pid); // 4321
}
svc_start
svc_start(name: string) → object
Käynnistää palvelun.
Parametrit:
| Parametri | Tyyppi | Kuvaus |
|---|---|---|
name |
string | Palvelun järjestelmänimi |
Tulos:
| Kenttä | Tyyppi | Kuvaus |
|---|---|---|
ok |
bool | true — käynnistyskomennon lähetys onnistui |
error |
string | Virheilmoitus tai "" |
Esimerkki:
let r = svc_start("MyService");
if (r.ok) {
console.log("Palvelu käynnistyy");
} else {
console.log("Käynnistysvirhe:", r.error);
}
svc_stop
svc_stop(name: string) → object
Pysäyttää palvelun.
Parametrit:
| Parametri | Tyyppi | Kuvaus |
|---|---|---|
name |
string | Palvelun järjestelmänimi |
Tulos:
| Kenttä | Tyyppi | Kuvaus |
|---|---|---|
ok |
bool | true — pysäytyskomennon lähetys onnistui |
error |
string | Virheilmoitus tai "" |
Esimerkki:
let r = svc_stop("MyService");
if (r.ok) {
console.log("Palvelu pysähtyy");
} else {
console.log("Pysäytysvirhe:", r.error);
}
svc_restart
svc_restart(name: string) → object
Käynnistää palvelun uudelleen: pysäytys → odota valmistumista (enintään 15 s) → käynnistys.
Parametrit:
| Parametri | Tyyppi | Kuvaus |
|---|---|---|
name |
string | Palvelun järjestelmänimi |
Tulos:
| Kenttä | Tyyppi | Kuvaus |
|---|---|---|
ok |
bool | true — palvelun uudelleenkäynnistys onnistui |
error |
string | Virheilmoitus tai "" |
Esimerkki:
let r = svc_restart("MyService");
if (r.ok) {
console.log("Palvelu käynnistettiin uudelleen");
} else {
console.log("Uudelleenkäynnistysvirhe:", r.error);
}
Täydellinen esimerkki: tilan tarkistus ja automaattinen uudelleenkäynnistys
let svcName = "MyService";
// Tarkista tila
let s = svc_status(svcName);
if (s.error) {
console.log("[VIRHE] Tilaa ei saatu haettua:", s.error);
} else if (s.state === "stopped") {
console.log("[VAROITUS] Palvelu on pysäytetty, käynnistetään...");
let r = svc_start(svcName);
console.log("Tulos:", r.ok ? "OK" : r.error);
} else if (s.state === "running") {
console.log("[OK] Palvelu on käynnissä, PID:", s.pid);
// Tarkista, vastaako prosessi
let alive = proc_alive(s.pid);
if (!alive.responding) {
console.log("[VAROITUS] Prosessi on jumissa, käynnistetään palvelu uudelleen...");
let r = svc_restart(svcName);
console.log("Uudelleenkäynnistys:", r.ok ? "OK" : r.error);
}
} else {
console.log("[TIETO] Tila:", s.state);
}
Kuinka löytää palvelun järjestelmänimi
Järjestelmänimi (ei näyttönimi) löytyy seuraavasti:
- PowerShell:
Get-Service | Where-Object { $_.DisplayName -like "*MyApp*" } | Select-Object Name - Tehtävienhallinta: Palvelut-välilehti → Nimi-sarake
- services.msc: hiiren oikealla painikkeella → Ominaisuudet → Palvelun nimi -kenttä