Windows Hizmeti için yürütülebilir yol nasıl değiştirilir?


55

Bir hizmet için yürütülebilir dosyanın yolunu komut satırından değiştirmek istiyorum.

Bunu nasıl yapabilirim?

Bu hizmetin yolundan çalıştırılabilir dosyaya başka bir .exe çalıştırmak istiyorum.


Dave'in cevabı ihtiyacınız olan şey değilse, lütfen biraz daha açıklamak için "düzenle" bağlantısını kullanın.
Arjan

Yanıtlar:


70

sc configBir servisin işaret ettiği yolu değiştirmek için komutu kullanabilirsiniz :

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

Bu, çağrılan hizmeti günceller YourServiceNameve "Çalıştırılabilir Yol" girişini değiştirir C:\SomeDirectory\YourFile.EXE. Servisinizi daha sonra yeniden başlatmak isteyeceksiniz, ki bunlarla yapabilirsiniz:

NET STOP YourServiceName & NET START YourServiceName

MySQL config (.ini) 'yi başka bir sürücüye taşıyorsanız. İç tırnakları bırakabilirsiniz. Değiştirilen dizenin tamamını tek bir çift tırnak içine sarmanız yeterlidir. .İni ve veri klasörümü D: Win7'de sürdüm.
Brian Boatright

1
Peki ya Path to executabletırnak ve diğer parametreler içeriyorsa? Örneğin: "C:\Program Files\CollabNet\Subversion Server\svnserve.exe" --service -r "E:\Repositories" --listen-port "3690"Maalesef bunun için regedit rotasına gitmek zorunda kaldım.
James Skemp,

@James - Bu karakterlerden kaçabileceğinden eminim, ama onunla oynamalıyım ve sana dönmeliyim.
LittleBobbyTables

6
Binpath = ve komut arasında gerekli bir boşluk olduğunu not etmek isterim. Aptal, biliyorum.
Chloe,

2
BinPath'te alıntılar ters eğik çizgiyle
kaçabilir

16

Bunu kayıt defterinde yapmanız gerekecektir:

HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services

Servise gidin, ardından yeni yolu yansıtacak şekilde görüntü adını değiştirin.

Her zaman olduğu gibi, PRIOR sistemini yedekleyin.


Bu benim için daha iyi çalıştı. Değiştirdiğim hizmetin bazı karmaşık argümanları vardı.
John Allers,

2

PowerShell ile de yapabilirsiniz:

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

Veya:

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

1

Yukarıda verilen cevap çok iyi sonuç veriyor, cevap veremiyorum, ancak yoldan alıntılar veya başka argümanlar olması durumunda eklemek için, kayıt defterinde bir işaretsiz yol açığı düzeltmek için bir imgelem gibi CMD'den yönetici olarak aşağıdakileri yapabilirsiniz :

(örneğin, C: \ Program Dosyaları (x86) \ YourService \ YourProcess.exe için)

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

powershell'den admin olarak aşağıdakileri yapabilirsiniz :

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

Bunlar size aşağıdaki sonucu verecektir:

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

... kanlı argümanlar ve kaçan parametreler bir kabus! Umarım bu gelecekte birine yardımcı olur.


0

Bir hizmeti yürütmek için yolunuzu doğrudan düzenleyemezsiniz. Bunun için sc komutunu kullanabilirsiniz,

Komut isteminizi yönetici olarak açın ve aşağıdaki komutu yazın,

SC CONFIG ServiceName binPath= "Path of your file"

Örneğin:

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

: - Görünüşünüz LittleBobbyTables ile aynı, eğer detaylarını detaylandırırsanız lütfen yapın. Nasıl cevap verileceği ve tur hakkında bir okuma her zaman ve her zaman her zaman iyidir.
mic84
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.