我想修改我的應用程序的路徑,但這樣做會破壞它,因爲服務仍然指向舊的位置。修改Windows服務的「可執行文件路徑」
通過轉到Administrative Tools > Services
,您可以打開屬性對話框並查看Path to executable
,但無法對其進行更改。
用戶可以通過任何方式修改服務路徑而無需重新安裝應用程序嗎?
我想修改我的應用程序的路徑,但這樣做會破壞它,因爲服務仍然指向舊的位置。修改Windows服務的「可執行文件路徑」
通過轉到Administrative Tools > Services
,您可以打開屬性對話框並查看Path to executable
,但無法對其進行更改。
用戶可以通過任何方式修改服務路徑而無需重新安裝應用程序嗎?
還有this approach seen on SuperUser它使用sc
命令行,而不是修改註冊表的:
sc config <service name> binPath= <binary path>
注:binPath=
後的空間是很重要的。還可以使用查詢當前配置:
sc qc <service name>
這將顯示類似的輸出:
[SC] QueryServiceConfig SUCCESS
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 : [email protected]
它涉及到編輯註冊表,但服務信息可以在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"
一個稍微深一點與「SC」命令,我們可以提取所有「服務名稱」,並獲得所有 'QueryServiceConfig' :)
>SC QUERY > "%computername%-services.txt" [enter]
>FIND "SERVICE_NAME: " "%computername%-services.txt" /i > "%computername%-services-name.txt" [enter]
>NOTEPAD2 "%computername%-services-name.txt" [enter]
然後,繼續用「CMD」 ..
>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]
原始數據已準備好飼養未來的批處理文件「,因此結果是這個樣子低於!
+ -------------+-------------------------+---------------------------+---------------+--------------------------------------------------+------------------+-----+----------------+--------------+--------------------+
| 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 |
但是,HTML將是相當容易:d
任何改進的高見,歡迎V^_^
或使用'sc'這是更容易,更容易而不喜歡搞砸。 – Liam
我會推薦這種方法通過直接註冊表更改。許多路徑需要帶引號的字符串,您可以輸入如下,例如MS SQL Server: 'sc config mssqlserver binPath =「\」F:\ SQL DATA \ MSSQL10.MSSQLSERVER \ MSSQL \ Binn \ sqlservr.exe \「 -sMSSQLSERVER「' –
在直接註冊表修改方法中,它在部署腳本中可能也更好一些。 –
甜。清潔,而不是註冊登記。 **注意:您需要關閉並打開services.msc才能看到更改。 – yonsk