私は自分のアプリケーションへのパスを変更したいのですが、それでもサービスが古い場所を指しているので変更します。
Administrative Tools > Services
に移動すると、プロパティダイアログを開いてPath to executable
を表示できますが、それを変更する方法はありません。
ユーザーがアプリケーションを再インストールしなくてもサービスパスを変更できる方法はありますか?
このアプローチは、レジストリを変更する代わりに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
レジストリの編集が含まれますが、サービス情報はHKEY_LOCAL_MACHINE\System\CurrentControlSet\Services
にあります。リダイレクトしたいサービスを見つけ、ImagePath
サブキーを見つけてその値を変更します。
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"
ファイル名を指定して実行(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
サービスを実行するためのパスを直接編集することはできません。そのためには、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"