1. 背景説明
Windows 環境での日々のプロジェクト開発プロセスでは、bat ファイルまたは exe ファイル プログラムを Windows サービスとして登録して、単独で実行する必要がある場合があります (ユーザーのログインがなくても、サービスは起動後に通常どおり実行できます)。ユーザーインタラクションインターフェースのexeプログラムは、バックグラウンドで実行するだけでよく、デスクトップにexeプログラムウィンドウの内容を表示したり、ユーザーが手動で開いたりする必要はありません。ユーザーが誤ってプログラムを閉じてしまうのを防ぐこともできます。
2. Microsoft の公式 SC コマンド
Microsoft のデフォルトの sc コマンドを使用してサービスを開始したため、[[SC] StartService failed 1053: サービスは開始要求または制御要求に適時に応答しませんでした。】エラーが発生したため、ここではNssm サービス カプセル化ツールを選択して、bat または exe ファイルをサービスとして実装します。
シリアルナンバー | SC注文 | SCコマンドの説明 |
1 | 構文: [ sc create service name start= auto binpath= "サービスとして必要なファイルパスとファイル名" displayname= "サービスマネージャーに表示されるサービス名" ] 例: Test_MontiorSCADAConnNumber.exe プログラムを E:\SC, NET コマンド test\Debug パスに設定して、testexe という名前のサービスを自動的に開始します。 (sc create testexe start= auto binpath= "E:\SC, NET command test\Debug\Test_MontiorSCADAConnNumber.exe" displayname= "実行可能プログラムをサービスとしてテストする") |
サービスの作成 |
2 | 構文: [ sc config サービス名 start=AUTO ] 例: testexe サービスを自動的に開始するように設定する (sc config testexe start=AUTO) |
サービスの開始方法を設定する |
3 | 構文: [ sc 開始サービス名] または [ net 開始サービス名] 例: testexe サービスの開始 (sc start testexe)または(net start testexe) |
サービス開始 |
4 | 構文: [ sc 一時停止サービス名] または [ net 一時停止サービス名] 例: testexe サービスを一時停止する (sc 一時停止 testexe) または (net 一時停止 testexe) |
サービスは利用できません |
5 | 構文: [ sc delete サービス名] または [ net delete サービス名] 例: testexe サービスの削除 (sc delete testexe)または(net delete testexe) |
サービスの削除 |
sc.exe create | Microsoft Learnレジストリおよびサービス コントロール マネージャー データベースにサービスのサブキーとエントリを作成する sc.exe create コマンドに関するリファレンス記事。https://learn.microsoft.com/zh-cn/windows-server/administration/windows-commands/sc-createSC構成サービスを使用する - Win32 アプリ | Microsoft Learn Windows SDK にはコマンド ライン ユーティリティ (Sc.exe) が含まれており、インストールされているサービスのデータベースを照会または変更するために使用されます。そのコマンドは、SCM が提供する機能に対応します。構文は次のとおりです。https://learn.microsoft.com/zh-CN/windows/win32/services/cconfiguring-a-service-using-scNetコマンド (オペレーティング システム) - Windows Server | Microsoft Learn では、オペレーティング システムに関する Net コマンドに関する情報を提供します。https://learn.microsoft.com/zh-cn/troubleshoot/windows-server/networking/net-commands-on-operating-systems SC コマンドの構文を表示します: [CMD ウィンドウを開いて sc と入力します]。以下に示す 表示:
3. NSSMサービスカプセル化ツール
3.1. NSSM の概要
NSSM は、 Windows 環境でインストール不要のサービス管理ソフトウェアです。bat ファイルや実行アプリケーションをサービスにカプセル化できます。カプセル化されたサービスは、自動起動などの設定が可能です。また、プログラムの実行状況を監視し、自動的に実行することもできます。デーモン プロセスの機能を実現し始めます。グラフィカル インターフェイス操作だけでなく、コマンド ライン設定も完全にサポートします。同じタイプのツールに Microsoft 独自のsrvonyがありますが、NSSM の方が使いやすく、強力です。
NSSM - 非吸引サービス マネージャーhttps://nssm.cc/ NSSM ダウンロード インターフェイスhttps://nssm.cc/downloadnssm-2.24.zip をダウンロードhttps://nssm.cc/release/nssm-2.24.zip
3.2. Bat または exe ファイルをサービスとしてカプセル化する
ダウンロードした NSSM 2.24 を解凍し、オペレーティング システムのビット数に応じて対応する NSSM を選択します。たとえば、オペレーティング システムが 64 ビットの場合、次の図に示すように、win64 フォルダー内の NSSM プログラムを使用することを選択します。
シリアルナンバー | NSSM は、bat ファイルまたは exe ファイルをサービス コマンドとしてカプセル化します。 | 説明する |
1 | NSSMインストール | Bat または exe ファイルをサービスとしてカプセル化するコマンドを作成し、操作可能なインターフェイス コマンドを開いて、サービスとしてカプセル化する必要があるファイルを簡単に選択します |
2 | nssm install サービス名「カプセル化するbatまたはexeファイルのパスと名前」 | カプセル化する必要があるbatまたはexeファイルのサービスを直接作成します。 例: [E:\SC, NET command test\restart Default Web Site.bat] ファイルから [testbatservice] という名前のサービスを作成する必要があります。コマンドは [nssm install testbatservice "E:\SC, NET command test] です。 \restart デフォルト Web サイト.bat"] |
3 | NSSM 開始サービス名 | 指定したサービスを開始する 例: [nssm start testbatservice] |
4 | NSSM一時停止サービス名 | サービスは利用できません 例: [nssm stop testbatservice] |
5 | NSSM再起動サービス名 | サービスを再起動する 例: [nssm restart testbatservice] |
6 | NSSM停止サービス名 | 故障中 例: [nssm stop testbatservice] |
7 | NSSM 削除サービス名 | サービスの削除 例: [nssm delete testbatservice] |
NSSM サービスカプセル化ツールの完全なコマンドラインコンテンツhttps://nssm.cc/commands
① スーパー管理者を使用してコマンド ライン (CMD) インターフェイスを開く必要があります。そうしないと、サービスの開始時に失敗します。
② NSSM プログラムのパスを入力します (例: 私の NSSM パスは次のとおりです: [E:\Thunder Download\nssm-2.24\win64])
--比如:我这里的NSSM路径是【E:\迅雷下载\nssm-2.24\win64】,那么我进入该路径的操作如下:
E:
cd E:\迅雷下载\nssm-2.24\win64
③NSSMフォームを開いてbatファイルをサービスとしてインストールします
④作成したサービスを起動します(例:ここで作成したサービス名はtestbatserviceです)
⑤サービスを再起動します(例:ここで作成したサービス名:testbatservice)
⑥サービスを停止します(例:ここで作成したサービス名:testbatservice)
⑦引越サービス