コマンドラインからサービスの実行ファイルのパスを変更したい
どうすればいいの?
そのサービスの実行パスから別の.exeを実行したい
64 sam 2010-12-15
sc config
コマンドを使用して、サービスが指すパスを変更することができます
SC CONFIG YourServiceName binPath= "C:\SomeDirectory\YourFile.EXE"
これにより、YourServiceName
というサービスが更新され、”Path to Executable “エントリがC:\SomeDirectory\YourFile.EXE
に変更されます。その後でサービスを再起動したいと思うでしょうが、これは以下の方法で行うことができます
NET STOP YourServiceName & NET START YourServiceName
83 LittleBobbyTables – Au Revoir 2011-03-03
レジストリで行う必要があります
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services
サービスに移動し、新しいパスを反映するように画像名を変更します
いつものように、システムのバックアップを取っておきましょう
19 dave 2010-12-15
PowerShellでもできます
Get-WmiObject win32_service -filter "Name='My Service'" `
| Invoke-WmiMethod -Name Change `
-ArgumentList @($null,$null,$null,$null,$null, `
"C:\Program Files (x86)\My Service\NewName.EXE")
Or:
Set-ItemProperty -Path "HKLM:\System\CurrentControlSet\Services\My Service" `
-Name ImagePath -Value "C:\Program Files (x86)\My Service\NewName.EXE"
2 Greg Sansom 2015-08-13
上で提供された回答は素晴らしい働きをします、私はそれに答えることはできませんが、追加するには、パスに引用符や他の引数を持つ必要がある場合、例えば、レジストリで引用符で囲まれていないパスの脆弱性を修正するために、imageepathのように、管理者として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"
…血まみれの引数とパラメータのエスケープは悪夢です!これが将来誰かの助けになることを願っています
2 Maverick Sevmont 2017-07-27
サービスの実行パスを直接編集することはできません。そのためには sc コマンドを使用します
管理者としてコマンドプロンプトを開き、次のコマンドを入力します
SC CONFIG ServiceName binPath= "Path of your file"
Eg:
sc config MongoDB binPath="I:\Programming\MongoDB\MongoDB\bin\mongod.exe --config I:\Programming\MongoDB\MongoDB\bin\mongod.cfg --service"
0 Codemaker 2018-08-14