web-dev-qa-db-ja.com

Windowsサービスの実行可能ファイルへのパスを変更する方法

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

どうやってやるの?

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

53
sam

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

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

これにより、YourServiceNameというサービスが更新され、 "Path to Executable"エントリがC:\SomeDirectory\YourFile.EXEに変更されます。後でサービスを再起動したいと思うでしょう。

NET STOP YourServiceName & NET START YourServiceName
66

あなたはレジストリでそれをする必要があるでしょう:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services

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

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

17
dave

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")

または

Set-ItemProperty -Path "HKLM:\System\CurrentControlSet\Services\My Service" `
    -Name ImagePath -Value "C:\Program Files (x86)\My Service\NewName.EXE"
2
Greg Sansom

上で提供された答えはすばらしい仕事です、私はそれに答えることができません、しかしあなたがパスに引用符または他の議論を持っている必要がある場合以下の をCMDから実行できます adminとして:

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

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

あなたは以下のことができます powershellから adminとして:

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

これらはあなたに次の結果を与えるでしょう:

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

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

1

サービスを実行するためのパスを直接編集することはできません。そのためには、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"
0
Codemaker