Windows サービスの実行可能ファイルへのパスを変更するにはどうすればいいですか?

Windows サービスの実行可能ファイルへのパスを変更するにはどうすればいいですか?

コマンドラインからサービスの実行可能ファイルへのパスを変更したい。

どうやってやるの?

そのサービスの実行可能ファイルへのパスから別の .EXE を実行したいと思います。

答え1

次のコマンドを使用してsc config、サービスが指すパスを変更できます。

SC CONFIG YourServiceName binPath= "C:\SomeDirectory\YourFile.EXE"

これにより、 というサービスが更新されYourServiceName、「実行ファイルへのパス」エントリが に変更されますC:\SomeDirectory\YourFile.EXE。その後、サービスを再起動する必要があります。これは、次のように実行できます。

NET STOP YourServiceName & NET START YourServiceName

答え2

レジストリでこれを行う必要があります:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services

サービスに移動し、新しいパスを反映するようにイメージ名を変更します。

いつものように、事前にシステムのバックアップを作成してください。

答え3

上記の回答はうまく機能しています。返信することはできませんが、パスに引用符やその他の引数が必要な場合、たとえば、imagepath などのレジストリ内の引用符のないパスの脆弱性を修正するには、次のようにします。CMDより管理者として:

(例: C:\Program Files (x86)\YourService\YourProcess.exe の場合)

SC CONFIG YourService binPath= "\"C:\Program Files (x86)\YourService\YourProcess.exe\"

次のことができますPowerShellから管理者として:

 SC.exe CONFIG YourService binPath= --% "\"C:\Program Files (x86)\YourService\YourProcess.exe\"

これにより、次の結果が得られます。

"C:\Program Files (x86)\YourService\YourProcess.exe"

...血まみれの引数とエスケープパラメータは悪夢です!これが将来誰かの役に立つことを願っています。

答え4

サービスを実行するためのパスを直接編集することはできません。そのためにはscコマンドを使用します。

管理者としてコマンドプロンプトを開き、次のコマンドを入力します。

SC CONFIG ServiceName binPath= "Path of your file"

例えば:

sc config MongoDB binPath="I:\Programming\MongoDB\MongoDB\bin\mongod.exe --config I:\Programming\MongoDB\MongoDB\bin\mongod.cfg --service"

関連情報