Windows 서비스의 실행 파일 경로를 변경하는 방법은 무엇입니까?


55

명령 줄에서 서비스의 실행 파일 경로를 변경하고 싶습니다.

어떻게해야합니까?

해당 서비스 경로에서 다른 .EXE를 실행 파일로 실행하고 싶습니다.


Dave의 답변이 필요한 것이 아니라면 "편집"링크를 사용하여 좀 더 설명해주세요.
Arjan

답변:


70

sc config명령을 사용하여 서비스가 가리키는 경로를 변경할 수 있습니다 .

SC CONFIG YourServiceName binPath= "C:\SomeDirectory\YourFile.EXE"

그러면 호출 된 서비스가 업데이트되고 YourServiceName"실행 파일 경로"항목이로 변경됩니다 C:\SomeDirectory\YourFile.EXE. 나중에 서비스를 다시 시작하여 다음 작업을 수행 할 수 있습니다.

NET STOP YourServiceName & NET START YourServiceName

MySQL 구성 (.ini)을 다른 드라이브로 이동하는 경우 내부 따옴표를 생략 할 수 있습니다. 수정 된 전체 문자열을 단일 쌍의 큰 따옴표로 묶기 만하면됩니다. 내 .ini 및 데이터 폴더를 Win7의 D : 드라이브로 옮겼습니다.
Brian Boatright

1
Path to executable따옴표와 다른 매개 변수가 포함 된 경우는 어떻습니까? 예를 들어 : "C:\Program Files\CollabNet\Subversion Server\svnserve.exe" --service -r "E:\Repositories" --listen-port "3690"슬프게도이 경로에 대한 regedit 경로를 찾아야했습니다.
James Skemp

@James-나는 당신이 그 캐릭터를 피할 수 있다고 확신하지만, 나는 그 캐릭터와 놀아서 다시 연락해야합니다.
LittleBobbyTables

6
binpath =와 명령 사이에 필요한 공간이 있습니다. 바보, 알아
클로이

2
binPath의 따옴표는 백 슬래시로 이스케이프 할 수 있습니다. \ "
gwyn

16

레지스트리에서이를 수행해야합니다.

HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services

서비스로 이동 한 다음 새 경로를 반영하도록 이미지 이름을 수정하십시오.

항상 그렇듯이 시스템을 우선 백업하십시오.


이것은 나를 위해 더 잘 작동했습니다. 내가 바꾼 서비스에는 복잡한 주장이있었습니다.
John Allers

2

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"

1

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

... 피의 논쟁과 탈출 매개 변수는 악몽입니다! 이것이 미래의 누군가를 돕기를 바랍니다.


0

서비스 실행 경로를 직접 편집 할 수 없습니다. 이를 위해 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"

:-당신의 LittleBobbyTables와 똑같아 보입니다. 어떻게 대답 하고 여행 하는지에 대한 독서 는 항상 좋은 것입니다.
mic84
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.