답변:
이 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"
위에 제공된 대답은 훌륭하게 작동하지만 회신 할 수는 없지만 경로에 따옴표 또는 다른 인수가 필요한 경우 레지스트리에서 인용되지 않은 경로 취약성을 수정하기 위해 말하십시오. CMD 에서 admin으로 다음 을 수행 할 수 있습니다 .
(예 : 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"