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


55

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

どうやってやるの?

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


Daveの答えが必要なものではない場合、「編集」リンクを使用してもう少し説明してください。
アルジャン

回答:


71

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

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

これにより、呼び出されるサービスが更新されYourServiceName、「実行可能ファイルへのパス」エントリがに変更されC:\SomeDirectory\YourFile.EXEます。その後、サービスを再起動します。これは次の方法で実行できます。

NET STOP YourServiceName & NET START YourServiceName

MySQL構成(.ini)を別のドライブに移動する場合。内側の引用符は省略できます。変更された文字列全体を二重引用符の単一ペアでラップするだけです。.iniとデータフォルダをWin7のD:ドライブに移動しました。
ブライアンボートライト

1
Path to executableに引用符やその他のパラメーターが含まれている場合はどうですか?例:"C:\Program Files\CollabNet\Subversion Server\svnserve.exe" --service -r "E:\Repositories" --listen-port "3690"悲しいことに、私はこのためにregeditルートに行かなければなりませんでした。
ジェームススケム

@ジェームズ-あなたはそれらのキャラクターをエスケープできると確信していますが、私はそれをいじって戻ってきなければなりません。
LittleBobbyTables

6
binpath =とコマンドの間に必要なスペースがあることに注意してください。愚か、私は知っています。
クロエ

2
BINPATHでの引用符はバックスラッシュでエスケープすることができます:\」
グウィン

16

レジストリでそれを行う必要があります。

HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services

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

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


これは私にとってはうまくいきました。私が変更していたサービスには、いくつかの複雑な議論がありました。
ジョンアラーズ

2

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"

1

上記の回答はうまくいきますが、返信することはできませんが、パスに引用符や他の引数が必要な場合、イメージパスなどのレジストリの引用されていないパスの脆弱性を修正するには管理者として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"

...血なまぐさい引数とエスケープパラメータは悪夢です!これが将来誰かを助けることを願っています。


0

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

:-あなたはLittleBobbyTablesと同じように見えますが、違いを詳しく説明できる場合は行ってください。答え方ツアーの読み方は、常に良いものです。
mic84
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.