
コマンドラインからサービスの実行可能ファイルへのパスを変更したい。
どうやってやるの?
そのサービスの実行可能ファイルへのパスから別の .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"