Я хочу изменить путь к исполняемому файлу для службы из командной строки.
Как я могу это сделать?
Я хочу запустить еще один .EXE из пути этого сервиса к исполняемому файлу.
Я хочу изменить путь к исполняемому файлу для службы из командной строки.
Как я могу это сделать?
Я хочу запустить еще один .EXE из пути этого сервиса к исполняемому файлу.
Ответы:
Вы можете использовать sc config
команду, чтобы изменить путь, на который указывает сервис:
SC CONFIG YourServiceName binPath= "C:\SomeDirectory\YourFile.EXE"
Это обновит вызванную службу YourServiceName
и изменит запись «Путь к исполняемому файлу» на C:\SomeDirectory\YourFile.EXE
. После этого вы захотите перезапустить свой сервис, что вы можете сделать с помощью:
NET STOP YourServiceName & NET START YourServiceName
Path to executable
также содержит кавычки и другие параметры? Например: "C:\Program Files\CollabNet\Subversion Server\svnserve.exe" --service -r "E:\Repositories" --listen-port "3690"
мне, к сожалению, пришлось пройти путь regedit для этого.
Вам нужно будет сделать это в реестре:
HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services
Перейдите к сервису, затем измените имя изображения, чтобы отразить новый путь
Как всегда, сделайте резервную копию системы ПРИОР.
Вы также можете сделать это с помощью 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"
Ответ, приведенный выше, прекрасно работает, я не могу ответить на него, но, чтобы сложить, в случае, если вам нужно иметь кавычки или другие аргументы в пути, скажем, чтобы исправить уязвимость пути без кавычек в реестре, такую как imagepath, вы может сделать следующее из CMD в качестве администратора:
(например, для C: \ Program Files (x86) \ YourService \ YourProcess.exe)
SC CONFIG YourService binPath= "\"C:\Program Files (x86)\YourService\YourProcess.exe\"
Вы можете сделать следующее из powershell от имени администратора:
SC.exe CONFIG YourService binPath= --% "\"C:\Program Files (x86)\YourService\YourProcess.exe\"
Это даст вам следующий результат:
"C:\Program Files (x86)\YourService\YourProcess.exe"
... кровавые аргументы и экранирование параметров - это кошмар! Надеюсь, это поможет кому-то в будущем.
Вы не можете напрямую редактировать свой путь для выполнения услуги. Для этого вы можете использовать команду 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"