Я хотел бы изменить путь к моему приложению, но это нарушает его, потому что служба все еще указывает на старое местоположение.
Перейдя в Administrative Tools > Services
, вы можете открыть диалог свойств и просмотреть Path to executable
, но изменить его невозможно.
Можно ли каким-либо образом изменить путь к службе, не переустанавливая приложение?
Ответ 1
Он включает в себя редактирование реестра, но служебную информацию можно найти в HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services
. Найдите службу, которую вы хотите перенаправить, найдите подраздел ImagePath
и измените это значение.
Ответ 2
Существует также этот подход, наблюдаемый на SuperUser, который использует командную строку sc
вместо изменения реестра:
sc config <service name> binPath= <binary path>
Примечание: пространство после binPath=
важно. Вы также можете запросить текущую конфигурацию, используя:
sc qc <service name>
Отображает вывод, похожий на:
[SC] QueryServiceConfig УСПЕХ
SERVICE_NAME: ServiceName
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
Ответ 3
Вы также можете сделать это с помощью 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"
Ответ 4
Вы можете удалить службу:
sc delete ServiceName
Затем заново создайте службу.
Ответ 5
Немного глубже с командой "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]
Сделайте небольшое редактирование NOTEPAD2..
![Представьте, что мы можем сделать]()
Затем перейдите к '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 ^ _ ^