web-dev-qa-db-ja.com

Windowsサービスの「実行ファイルへのパス」を変更する

私は自分のアプリケーションへのパスを変更したいのですが、それでもサービスが古い場所を指しているので変更します。

Administrative Tools > Servicesに移動すると、プロパティダイアログを開いてPath to executableを表示できますが、それを変更する方法はありません。

ユーザーがアプリケーションを再インストールしなくてもサービスパスを変更できる方法はありますか?

232
GenericJon

このアプローチは、レジストリを変更する代わりにscコマンドラインを使用するSuperUser でも見られます。

sc config <service name> binPath= <binary path>

注:binPath=の後のスペースは重要です。現在の設定を問い合わせることもできます。

sc qc <service name>

これにより、次のような出力が表示されます。

[SC] QueryServiceConfig成功

SERVICE_NAME:サービス名

    TYPE               : 10  WIN32_OWN_PROCESS
    START_TYPE         : 2   AUTO_START
    ERROR_CONTROL      : 1   NORMAL
    BINARY_PATH_NAME   : C:\Services\ServiceName
    LOAD_ORDER_GROUP   :
    TAG                : 0
    DISPLAY_NAME       : <Display name>
    DEPENDENCIES       :
    SERVICE_START_NAME : user-name@domain-name
216

レジストリの編集が含まれますが、サービス情報はHKEY_LOCAL_MACHINE\System\CurrentControlSet\Servicesにあります。リダイレクトしたいサービスを見つけ、ImagePathサブキーを見つけてその値を変更します。

285
Matt McHugh

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"
10
Greg Sansom

ファイル名を指定して実行(win + R)を開き、 "Regedit.exe"と入力して "レジストリエディタ"を開き、次に進みます。

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services

Apache2.4」フォルダを開き、「ImagePath」を見つけます。右側で、 "value Data"の下の "ImagePath"を開き、次のパスを入力します。

"C:\ xampp\Apache\bin\httpd.exe" -k runservice他の人のためのXAMPPはApacheがインストールされている場所とその内部を指すbinフォルダ "C :( Apacheのインストール場所)\ bin\httpd.exe" -k runservice

3
Antony Joseph

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