Bagaimana mengubah jalur ke executable untuk Layanan Windows?


55

Saya ingin mengubah jalur ke executable untuk layanan dari baris perintah.

Bagaimana saya bisa melakukan itu?

Saya ingin menjalankan .EXE lain dari jalur layanan ke executable.


Jika jawaban Dave bukan yang Anda butuhkan, silakan gunakan tautan "edit" untuk menjelaskan lebih banyak?
Arjan

Jawaban:


71

Anda dapat menggunakan sc configperintah untuk mengubah jalur yang ditunjuk layanan:

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

Ini akan memperbarui layanan yang dipanggil YourServiceNamedan mengubah entri "Path to Executable" menjadi C:\SomeDirectory\YourFile.EXE. Anda akan ingin memulai kembali layanan Anda setelahnya, yang dapat Anda lakukan dengan:

NET STOP YourServiceName & NET START YourServiceName

Jika Anda memindahkan konfigurasi MySQL (.ini) ke drive lain. Anda dapat meninggalkan kutipan dalam. Hanya membungkus seluruh string yang dimodifikasi menjadi sepasang tanda kutip ganda. Pindahkan folder .ini dan data saya ke D: drive di Win7.
Brian Boatright

1
Bagaimana dengan saat itu Path to executablejuga berisi kutipan dan parameter lainnya? Sebagai contoh: "C:\Program Files\CollabNet\Subversion Server\svnserve.exe" --service -r "E:\Repositories" --listen-port "3690"Saya sedih harus pergi rute regedit untuk yang satu ini.
James Skemp

@ James - Saya cukup yakin Anda dapat melarikan diri dari karakter-karakter itu, tetapi saya harus bermain-main dengannya dan kembali kepada Anda.
LittleBobbyTables

6
Ingin mencatat ada ruang yang diperlukan antara binpath = dan perintah. Bodoh, aku tahu.
Chloe

2
Kutipan di binPath dapat diloloskan dengan backslash: \ "
gwyn

16

Anda harus melakukan itu di registri:

HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services

Arahkan ke layanan, lalu ubah nama gambar untuk mencerminkan jalur baru

Seperti biasa, buat cadangan sistem SEBELUMNYA.


Ini bekerja lebih baik untuk saya. Layanan yang saya ubah memiliki beberapa argumen kompleks.
John Allers

2

Anda juga bisa melakukannya dengan 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")

Atau:

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

1

Jawaban yang diberikan di atas berfungsi dengan baik, saya tidak bisa menjawabnya, tetapi untuk menjumlahkan, jika Anda perlu memiliki kutipan atau argumen lain di jalur, katakan untuk memperbaiki kerentanan jalur yang tidak dikutip dalam registri, seperti sebuah imagepath, Anda dapat melakukan hal berikut dari CMD sebagai admin:

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

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

Anda dapat melakukan hal berikut dari PowerShell sebagai admin:

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

Ini akan memberi Anda hasil berikut:

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

... argumen berdarah dan melarikan diri parameter adalah mimpi buruk! Semoga ini bisa membantu seseorang di masa depan.


0

Anda tidak dapat langsung mengedit jalur Anda untuk mengeksekusi layanan. Untuk itu Anda bisa menggunakan perintah sc,

Buka prompt perintah Anda sebagai administrator, lalu ketik perintah berikut,

SC CONFIG ServiceName binPath= "Path of your file"

Misalnya:

sc config MongoDB binPath="I:\Programming\MongoDB\MongoDB\bin\mongod.exe --config I:\Programming\MongoDB\MongoDB\bin\mongod.cfg --service"

: - penampilan Anda sama dengan LittleBobbyTables, jika Anda dapat detail perbedaannya silakan lakukan. Bacaan tentang Cara Menjawab dan tur selalu bagus setiap saat.
mic84
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.