API: Windowsサービス
Windowsサービスの状態取得、起動、停止、再起動を行う関数です。
C++登録: regService(js)。
JsN.exeを管理者として実行する必要があります。
サービスの状態一覧
状態 (state) |
コード (code) |
説明 |
|---|---|---|
"running" |
4 | サービスが実行中 |
"stopped" |
1 | サービスが停止中 |
"start_pending" |
2 | 起動処理中 |
"stop_pending" |
3 | 停止処理中 |
"paused" |
7 | 一時停止中 |
"pause_pending" |
6 | 一時停止への移行中 |
"continue_pending" |
5 | 再開処理中 |
"unknown" |
— | 不明な状態 |
svc_status
svc_status(name: string) → object
サービスの現在の状態を取得します。
パラメータ:
| パラメータ | 型 | 説明 |
|---|---|---|
name |
string | サービスのシステム名 (表示名ではありません) |
戻り値:
| フィールド | 型 | 説明 |
|---|---|---|
state |
string | 上記テーブルの状態 |
code |
number | 数値の SERVICE_* コード (1–7) |
pid |
number | サービスプロセスのPID (実行中でない場合は0) |
error |
string | エラーメッセージまたは "" |
例:
let s = svc_status("MyService");
if (s.error) {
console.log("エラー:", s.error);
} else {
console.log("状態:", s.state); // "running"
console.log("PID:", s.pid); // 4321
}
svc_start
svc_start(name: string) → object
サービスを起動します。
パラメータ:
| パラメータ | 型 | 説明 |
|---|---|---|
name |
string | サービスのシステム名 |
戻り値:
| フィールド | 型 | 説明 |
|---|---|---|
ok |
bool | true — 起動コマンドが正常に送信されました |
error |
string | エラーメッセージまたは "" |
例:
let r = svc_start("MyService");
if (r.ok) {
console.log("サービスを起動しています");
} else {
console.log("起動エラー:", r.error);
}
svc_stop
svc_stop(name: string) → object
サービスを停止します。
パラメータ:
| パラメータ | 型 | 説明 |
|---|---|---|
name |
string | サービスのシステム名 |
戻り値:
| フィールド | 型 | 説明 |
|---|---|---|
ok |
bool | true — 停止コマンドが正常に送信されました |
error |
string | エラーメッセージまたは "" |
例:
let r = svc_stop("MyService");
if (r.ok) {
console.log("サービスを停止しています");
} else {
console.log("停止エラー:", r.error);
}
svc_restart
svc_restart(name: string) → object
サービスを再起動します: 停止 → 完了を待機 (最大15秒) → 起動。
パラメータ:
| パラメータ | 型 | 説明 |
|---|---|---|
name |
string | サービスのシステム名 |
戻り値:
| フィールド | 型 | 説明 |
|---|---|---|
ok |
bool | true — サービスが正常に再起動されました |
error |
string | エラーメッセージまたは "" |
例:
let r = svc_restart("MyService");
if (r.ok) {
console.log("サービスを再起動しました");
} else {
console.log("再起動エラー:", r.error);
}
完全な例: 状態チェックと自動再起動
let svcName = "MyService";
// 状態をチェック
let s = svc_status(svcName);
if (s.error) {
console.log("[エラー] 状態の取得に失敗:", s.error);
} else if (s.state === "stopped") {
console.log("[警告] サービスが停止しています。起動します...");
let r = svc_start(svcName);
console.log("結果:", r.ok ? "OK" : r.error);
} else if (s.state === "running") {
console.log("[OK] サービスは実行中です。PID:", s.pid);
// プロセスが応答しているかチェック
let alive = proc_alive(s.pid);
if (!alive.responding) {
console.log("[警告] プロセスが応答していません。サービスを再起動します...");
let r = svc_restart(svcName);
console.log("再起動:", r.ok ? "OK" : r.error);
}
} else {
console.log("[情報] 状態:", s.state);
}
サービスのシステム名の見つけ方
システム名 (表示名ではありません) は以下の方法で確認できます:
- PowerShell:
Get-Service | Where-Object { $_.DisplayName -like "*MyApp*" } | Select-Object Name - タスクマネージャー: 「サービス」タブ → 「名前」列
- services.msc: サービスを右クリック → 「プロパティ」 → 「サービス名」フィールド