Изменение «Путь к исполняемому файлу» службы Windows - PullRequest
235 голосов
/ 25 августа 2011

Я бы хотел изменить путь к своему приложению, но это нарушает его, потому что служба все еще указывает на старое местоположение.

Переходя к Administrative Tools > Services, вы можете открыть диалоговое окно свойств и просмотреть Path to executable, но изменить его невозможно.

Может ли пользователь каким-либо образом изменить путь службы без переустановки приложения?

Ответы [ 7 ]

286 голосов
/ 25 августа 2011

Это включает в себя редактирование реестра, но служебную информацию можно найти в HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services. Найдите сервис, который вы хотите перенаправить, найдите подраздел ImagePath и измените это значение.

218 голосов
/ 22 июля 2014

Существует также такой подход, наблюдаемый в SuperUser , который использует командную строку sc вместо изменения реестра:

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

Примечание: пробел после binPath= важен. Вы также можете запросить текущую конфигурацию, используя:

sc qc <service name>

Отображает вывод, похожий на:

[SC] QueryServiceConfig SUCCESS

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
10 голосов
/ 13 августа 2015

Вы также можете сделать это с помощью 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"
3 голосов
/ 01 августа 2018

Откройте Run (win + R), введите «Regedit.exe», чтобы открыть «Редактор реестра», перейдите на

HKEY_LOCAL_MACHINE \ System \ CurrentControlSet \ Services

find " Apache2.4 ", откройте папку, найдите " ImagePath " в правой части, откройте "ImagePath" в разделе " value Data "введите следующий путь:

" C: \ xampp \ apache \ bin \ httpd.exe "-k runservice для XAMPP, где другие указывают на расположение, гдеApache установлен, и внутри найдите папку bin «C: (установленное Apache) \ bin \ httpd.exe» -k runservice

0 голосов
/ 14 августа 2018

Вы не можете напрямую редактировать свой путь для выполнения услуги.Для этого вы можете использовать команду sc,

SC CONFIG ServiceName binPath= "Path of your file"

Например:

sc config MongoDB binPath="I:\Programming\MongoDB\MongoDB\bin\mongod.exe --config I:\Programming\MongoDB\MongoDB\bin\mongod.cfg --service"
0 голосов
/ 27 октября 2017

Чуть глубже с командой '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. Select 'SERVICE_NAME: ', CTRL+H, click 'Replace All' Imagine that we can do 'Replace All' within 'CMD'

Затем перейдите к «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]

it is 'SERVICES on Our Machine' Необработанные данные готовы к загрузке «будущего пакетного файла», поэтому результат выглядит следующим образом !!!

+ -------------+-------------------------+---------------------------+---------------+--------------------------------------------------+------------------+-----+----------------+--------------+--------------------+
| 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 ^ _ ^

0 голосов
/ 12 августа 2015

Вы можете удалить сервис:

sc delete ServiceName

Затем заново создать сервис.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...