Windows hizmetinin "Yürütülebilir dosya yolu" nu değiştirme


253

Uygulamamın yolunu değiştirmek istiyorum, ancak hizmet hala eski konumu işaret ettiğinden bunu yapıyor.

Giterek Administrative Tools > Servicesbir özellikler iletişim kutusu açabilir ve görüntüleyebilirsiniz Path to executable, ancak değiştirmenin bir yolu yoktur.

Kullanıcının uygulamayı yeniden yüklemeye gerek kalmadan hizmet yolunu değiştirebilmesinin bir yolu var mı?

Yanıtlar:


245

SuperUser'dasc kayıt defterini değiştirmek yerine komut satırını kullanan bu yaklaşım da vardır :

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

Not: sonraki boşluk binPath=önemlidir. Geçerli yapılandırmayı aşağıdakileri kullanarak da sorgulayabilirsiniz:

sc qc <service name>

Bu, aşağıdakine benzer bir çıktı görüntüler:

[SC] QueryServiceConfig SUCCESS

SERVICE_NAME: Hizmet Adı

    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

24
Doğrudan kayıt defteri değişiklikleri üzerinde bu yaklaşımı öneriyorum. Birçok yol, örneğin MS SQL Server ile aşağıdaki gibi girebileceğiniz alıntılanmış dizeler gerektirir: sc config mssqlserver binPath= "\"F:\SQL DATA\MSSQL10.MSSQLSERVER\MSSQL\Binn\sqlservr.exe\" -sMSSQLSERVER"
Marc Durdin

2
Ayrıca, bir dağıtım komut dosyasında doğrudan kayıt defteri değişiklik yaklaşımından biraz daha hoştur.
Niall Connaughton

Tatlı. Reg mucking daha temiz. ** Not: Değişikliği görmek için services.msc dosyasını kapatıp açmanız gerekecektir.
yonsk

1
Eğer bir alırsanız [SC] QueryServiceConfig FAILED 122:sonra sc qc Xkullanım sc qc X 1000bakın bu
raphael

13
Bunu PowerShell'den kullanıyorsanız sc.exe, çıplak değil, kullandığınızdan emin olunsc
fiat

293

Kayıt defterini düzenlemeyi içerir, ancak hizmet bilgileri içinde bulunabilir HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services. Yeniden yönlendirmek istediğiniz hizmeti bulun, ImagePathalt anahtarı bulun ve bu değeri değiştirin.


3
Sonunda bu kayıt defteri verilerine yol açsa da, hizmetle başa çıkmak için özel Windows API işlevleri olduğunu belirtmeliyim. Doğrudan kayıt defteri değişikliğinden kaçınılmalıdır (çünkü Windows'un exe, fe yolunu değiştirdiğinde başka neler değiştiğinden emin olamazsınız), ne yaptığınızdan kesinlikle emin değilseniz.
lospejos

3
@lospejos "Hizmetle başa çıkmak için özel Windows API işlevleri olduğunu belirtmeliyim" ... hangisi olurdu?
Nick M

Birisi Services.msc'de güncelleştirilmiş hizmet yolunu
görmezse cmd'de

10

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"

3

Çalıştır'ı açın (win + R), "Regedit.exe" yazın, "Kayıt Defteri Düzenleyicisi" ni açmak için

HKEY_LOCAL_MACHINE \ System \ CurrentControlSet \ Services

find " Apache2.4 " klasörü açmak " ImagePath " bulmak sağ tarafta, "ImagePath" açmak " value Data " altında aşağıdaki yolu koymak:

"C: \ xampp \ apache \ bin \ httpd.exe" -k başkaları için XAMPP çalışma servisi düşmanı Apache'nin yüklendiği konumu gösterir ve içinde "C: (Apache kurulu konumu) \ bin \ httpd.exe" bin klasörünü bulun -k koşu servisi


0

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

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"

0

Kimlik doğrulama kullanmak için bir MongoDB hizmetini değiştirmeye çalışan herkes için bu @CodeMaker'ın cevabında küçük değişiklikler yapıldı.

"Hizmetler" deki "Yürütülebilir dosya yolu" na baktığımda, yürütülen satır zaten konuşma işaretleri içeriyordu. Bu yüzden örneğinde küçük değişiklikler yapmak zorunda kaldım.

Spesifik olmak.

  1. Windows'da Hizmetler yazın
  2. MongoDB'yi (veya değiştirmek istediğiniz hizmeti) bulun ve durdurduğunuzdan emin olarak hizmeti açın.
  3. Hizmet Adını not edin (görünen adı değil)
  4. "Yürütülebilir dosyanın yolu" nu bulun ve kopyalayın.

Benim için yol buydu (konuşma işaretlerine dikkat edin)

"C:\Program Files\MongoDB\Server\4.2\bin\mongod.exe" --config "C:\Program Files\MongoDB\Server\4.2\bin\mongod.cfg" --service

Komut satırı yazın

sc config MongoDB binPath= "<Modified string with \" to replace ">"

Benim durumumda bu

sc config MongoDB binPath= "\"C:\Program Files\MongoDB\Server\4.2\bin\mongod.exe\" --config \"C:\Program Files\MongoDB\Server\4.2\bin\mongod.cfg\" --service -- auth"

-2

Hizmeti silebilirsiniz:

sc delete ServiceName

Ardından hizmeti yeniden oluşturun.


3
Bunu yapmaya gerek yok, bunu yapmanın en az 3 daha iyi yolu var
Liam

-2

'SC' komutuyla biraz daha derine inerek, tüm 'Hizmet Adı'nı çıkarabiliriz ve' QueryServiceConfig 'dosyasını aldık :)

>SC QUERY > "%computername%-services.txt" [enter]

>FIND "SERVICE_NAME: " "%computername%-services.txt" /i > "%computername%-services-name.txt" [enter]

>NOTEPAD2 "%computername%-services-name.txt" [enter]

'Küçük' NOTEPAD2 düzenleme yapın .. 'SERVICE_NAME:', CTRL + H'yi seçin, 'Tümünü Değiştir'i tıklayın 'CMD' içinde 'Tümünü Değiştir' yapabileceğimizi düşünün

Sonra 'CMD' ile devam edin ..

>FOR /F "DELIMS= SKIP=2" %S IN ('TYPE "%computername%-services-name.txt"') DO @SC QC "%S" >> "%computername%-services-list-config.txt" [enter]

>NOTEPAD2 "%computername%-services-list-config.txt" [enter]

'Makinemizdeki HİZMETLER' Ham veriler 'gelecekteki toplu iş dosyasını' beslemeye hazırdır, bu nedenle sonuç aşağıdaki gibi görünecektir !!!

+ -------------+-------------------------+---------------------------+---------------+--------------------------------------------------+------------------+-----+----------------+--------------+--------------------+
| SERVICE_NAME | TYPE                    | START_TYPE                | ERROR_CONTROL | BINARY_PATH_NAME                                 | LOAD_ORDER_GROUP | TAG | DISPLAY_NAME   | DEPENDENCIES | SERVICE_START_NAME |
+ -------------+-------------------------+---------------------------+---------------+--------------------------------------------------+------------------+-----+----------------+--------------+--------------------+
+ WSearch      | 10  WIN32_OWN_PROCESS   | 2   AUTO_START  (DELAYED) | 1   NORMAL    | C:\Windows\system32\SearchIndexer.exe /Embedding | none             | 0   | Windows Search | RPCSS        | LocalSystem        |
+ wuauserv     | 20  WIN32_SHARE_PROCESS | 2   AUTO_START  (DELAYED) | 1   NORMAL    | C:\Windows\system32\svchost.exe -k netsvcs       | none             | 0   | Windows Update | rpcss        | LocalSystem        |

Ancak, HTML oldukça kolay olacak: D

Herhangi bir parlak fikir geliştirme için bekliyoruz V ^ _ ^


Ya scda çok, çok daha kolay ve daha az vidalamak gibi kullanın.
Liam
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.