回答:
実行可能ファイルからWindowsサービスを作成するには、以下を使用できますsc.exe
。
sc.exe create <new_service_name> binPath= "<path_to_the_service_executable>"
実際のexe
パスを引用符で囲み、の後にスペースを入れる必要がありますbinPath=
。
sc
コマンドの詳細については、Microsoft KB251192を参照してください。
実行可能ファイルだけでは機能しないことに注意してください。実行可能ファイルはWindowsサービスでなければなりません(ServiceMainを実装するなど)。サービス以外の実行可能ファイルをサービスとして登録すると、サービスを開始しようとすると次のエラーが発生します。
エラー1053:サービスは開始または制御要求にタイムリーに応答しませんでした。
任意の非サービス実行可能ファイルからWindowsサービスを作成できるツールがあります。そのようなツールの例については、他の回答を参照してください。
binpath=
実行可能パスを二重引用符で囲む必要がある後のスペースは、少なくともWindows 10では完全に間違っています。パスに空白のような特殊文字が含まれている場合にのみ、引用符が必要です。また、大文字小文字の区別(lowe / upper / mixed-case)はどこでも問題ありません(変数名も同様)。でdisplayname="my service"
最初の行(Name
)として表示するサービスを作成するときにコマンドラインに渡すもう1つの利点services.msc
です。
binPath=
Windows 7ではWindows 7ではなく後のスペースが必要でした
NSSM(非Sucking Service Manager)を使用して、サービスとして.BATまたは.EXEファイルを実行します。
nssm.exe install [serviceName]
拡張(Kevin Tong)回答。
ステップ1:nssm-2.24.zipをダウンロードして解凍する
手順2:コマンドラインから次のように入力します。
C:\> nssm.exe install [servicename]
以下のようにGUIを開き(例はUT2003サーバーです)、次に参照するだけです:yourapplication.exe
詳細:https : //nssm.cc/usage
nssm.exe install [serviceName]
。このソリューションは機能しますが、GUIアプリケーションがある場合、Win Serever2003では機能しません。後で削除したい場合は、nssm.exe remove [youservicename]
nginx
、不要で誤解を招く可能性があります。コマンドはそれなしでも動作します。コマンドプロンプトからサービス名を指定する場合は、オプションのパラメーターです。
多くの既存の回答には、インストール時の人間の介入が含まれます。これはエラーが発生しやすいプロセスになる可能性があります。サービスとしてインストールしたい実行可能ファイルが多数ある場合、最後に実行したいことは、インストール時に手動で実行することです。
上記のシナリオに向けて、実行可能ファイルをサービスとしてインストールするコマンドラインツールである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>
これらの追加機能は便利です。管理者として実行する必要があります
sc create <service_name> binpath=<binary_path>
sc stop <service_name>
sc queryex <service_name>
sc delete <service_name>
サービス名にスペースが含まれている場合は、「引用符」で囲みます。
sc create <service_name> binpath= <binary_path>
サービスの作成\編集\削除操作用の小さな無料のユーティリティをチェックしてください。ここに作成例があります:
[サービス]-> [変更]-> [作成]に移動します
実行可能ファイル(Googleドライブ):[ダウンロード]
ソースコード:[ダウンロード]
ブログ投稿:[BlogLink]
サービスエディタークラス:WinServiceUtils.cs