実行可能ファイルからWindowsサービスを作成する


回答:


460

実行可能ファイルからWindowsサービスを作成するには、以下を使用できますsc.exe

sc.exe create <new_service_name> binPath= "<path_to_the_service_executable>"

実際のexeパスを引用符で囲み、の後にスペースを入れる必要がありますbinPath=

scコマンドの詳細については、Microsoft KB251192を参照してください

実行可能ファイルだけでは機能しないことに注意してください。実行可能ファイルはWindowsサービスでなければなりません(ServiceMainを実装するなど)。サービス以外の実行可能ファイルをサービスとして登録すると、サービスを開始しようとすると次のエラーが発生します。

エラー1053:サービスは開始または制御要求にタイムリーに応答しませんでした。

任意の非サービス実行可能ファイルからWindowsサービスを作成できるツールがあります。そのようなツールの例については、他の回答を参照してください。


11
このコマンドが機能するためには、(ほぼ間違いなく)コマンドプロンプトを管理者として実行する必要があります
Jeutnarg

2
パスも完全修飾パスである必要があります。相対パスを使用してサービスを開始できませんでした。
RunOfTheShipe 2017

4
binpath=実行可能パスを二重引用符で囲む必要がある後のスペースは、少なくともWindows 10では完全に間違っています。パスに空白のような特殊文字が含まれている場合にのみ、引用符が必要です。また、大文字小文字の区別(lowe / upper / mixed-case)はどこでも問題ありません(変数名も同様)。でdisplayname="my service"最初の行(Name)として表示するサービスを作成するときにコマンドラインに渡すもう1つの利点services.mscです。

2
binPath=Windows 7ではWindows 7ではなく後のスペースが必要でした
datchung

242

NSSM(非Sucking Service Manager)を使用して、サービスとして.BATまたは.EXEファイルを実行します。

http://nssm.cc/

  • ステップ1:NSSMをダウンロードする
  • ステップ2:サービスをインストールするnssm.exe install [serviceName]
  • ステップ3:これにより、実行可能ファイルを見つけるために使用するGUIが開きます

6
史上最高のサービスマネージャー。NSSMを使用してPlexWatchをサービスとしてインストールすることもできました。
2014年

2
このセットは永遠にサービスですか?Windowsが起動するたびにサービスが開始されますか?また、ユーザーの操作なしでこれを行うにはどうすればよいですか?スクリプトまたは何らかのコード?
John Demetriou

9
これは本当に素晴らしいです、私は最初の答えの代わりにこの答えを受け入れることができれば幸いです:-(
ドイツ語Latorre

2
サーバーでDropboxをサービスとして実行できます。絶対に吸わないツール!
バリーグベンカヤ2017

1
nssmで作業できるようにするには、exeファイルはWindowsサービスプロジェクトである必要がありますか、それとも通常のexeファイルですか?コマンドプロンプトなど
Sanjeev

92

拡張(Kevin Tong)回答。

ステップ1:nssm-2.24.zipをダウンロードして解凍する

手順2:コマンドラインから次のように入力します。

C:\> nssm.exe install [servicename]

以下のようにGUIを開き(例はUT2003サーバーです)、次に参照するだけです:yourapplication.exe

ここに画像の説明を入力してください

詳細:https : //nssm.cc/usage


4
正しい構文nssm.exe install [serviceName]。このソリューションは機能しますが、GUIアプリケーションがある場合、Win Serever2003では機能しません。後で削除したい場合は、nssm.exe remove [youservicename]
Hammad Khan

1
nginxへの参照は、それがサービスとして実行したい特定のプログラムであるためだと思いますか?上記のhmdのコメントを見るまで、nginxはインストールに必要な依存関係であることを暗示して助けようとしていたと思いましたが、GUIではnginxをインストールしていないように見え、Unreal Tournamentをインストールしていますサーバ?この例は一貫性がなく、誤解を招く可能性があることを指摘するだけです。単純な「サービスとしてnginxをインストールしたいとすると、それは次のようになります:」が役立ちます。
flutefreak7 2015年

@ flutefreak7はいnginx、不要で誤解を招く可能性があります。コマンドはそれなしでも動作します。コマンドプロンプトからサービス名を指定する場合は、オプションのパラメーターです。
Hammad Khan

1
nssmを使用しようとすると、Windowsフォームが起動していますが、フォームが表示されません...なぜですか?
Radenko Zec 2015

アプリケーションをWindowsサービスとして実行し、ほとんどがバックエンド用です。また、別のroot / adminユーザー名で実行されている可能性もあります。あなたはそれをチェックする必要があります。また、ここで確認できる詳細情報:nssm.cc/usage

16

多くの既存の回答には、インストール時の人間の介入が含まれます。これはエラーが発生しやすいプロセスになる可能性があります。サービスとしてインストールしたい実行可能ファイルが多数ある場合、最後に実行したいことは、インストール時に手動で実行することです。

上記のシナリオに向けて、実行可能ファイルをサービスとしてインストールするコマンドラインツールであるsermanを作成しました。書き込む必要があるのは(そして一度だけ書き込むだけ)、実行可能ファイルと一緒の単純なサービス構成ファイルです。走る

serman install <path_to_config_file>

サービスをインストールします。stdoutそしてstderr、すべてログに記録されています。詳しくは、プロジェクトのウェブサイトをご覧ください

以下に示すように、作業構成ファイルは非常に単純です。しかし<env><persistent_env>以下のような多くの便利な機能も備えています。

<service>
  <id>hello</id>
  <name>hello</name>
  <description>This service runs the hello application</description>

  <executable>node.exe</executable>

  <!-- 
       {{dir}} will be expanded to the containing directory of your 
       config file, which is normally where your executable locates 
   -->
  <arguments>"{{dir}}\hello.js"</arguments>

  <logmode>rotate</logmode>

  <!-- OPTIONAL FEATURE:
       NODE_ENV=production will be an environment variable 
       available to your application, but not visible outside 
       of your application
   -->
  <env name="NODE_ENV" value="production"/>

  <!-- OPTIONAL FEATURE:
       FOO_SERVICE_PORT=8989 will be persisted as an environment
       variable to the system.
   -->
  <persistent_env name="FOO_SERVICE_PORT" value="8989" />
</service>

9

これらの追加機能は便利です。管理者として実行する必要があります

sc create  <service_name> binpath=<binary_path>
sc stop    <service_name>
sc queryex <service_name>
sc delete  <service_name>

サービス名にスペースが含まれている場合は、「引用符」で囲みます。


My Win 2003 sc.exe 5.2.3790.3959にも、M $ F1に
user6698332

1
「インストール」の代わりに「作成」を使用します。sc create <service_name> binpath= <binary_path>
CSquared

4

私はそのための良い製品であるAlwaysUpをテストしました。無料ではありませんが、30日間の試用期間があるため、試してみることができます...


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.