내 응용 프로그램의 경로를 수정하고 싶지만 서비스가 여전히 이전 위치를 가리 키기 때문에 중단됩니다.Windows 서비스의 "실행 파일 경로"수정
Administrative Tools > Services
으로 이동하면 속성 대화 상자를 열고 Path to executable
을 볼 수는 있지만 변경할 방법이 없습니다.
사용자가 응용 프로그램을 다시 설치하지 않고도 서비스 경로를 수정할 수있는 방법이 있습니까?
내 응용 프로그램의 경로를 수정하고 싶지만 서비스가 여전히 이전 위치를 가리 키기 때문에 중단됩니다.Windows 서비스의 "실행 파일 경로"수정
Administrative Tools > Services
으로 이동하면 속성 대화 상자를 열고 Path to executable
을 볼 수는 있지만 변경할 방법이 없습니다.
사용자가 응용 프로그램을 다시 설치하지 않고도 서비스 경로를 수정할 수있는 방법이 있습니까?
또한 레지스트리를 수정하는 대신 sc
명령 줄을 사용 this approach seen on SuperUser있다 binPath=
후 공간이 중요하다. 또한 사용하여 현재 구성을 조회 할 수 있습니다
[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 : [email protected]
레지스트리 편집이 포함되지만 서비스 정보는 HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services
에 있습니다. 리디렉션 할 서비스를 찾아 ImagePath
하위 키를 찾아 값을 변경하십시오.
sc config <service name> binPath= <binary path>
참고 :
마지막으로이 데이터를 레지스트리에 이르게하지만, 나는 특별한 윈도우가 존재한다는 것을 언급해야한다 서비스를 처리하는 API 함수. 직접 레지스트리 수정은 피해야한다 당신은 당신이 무엇인지 ** 절대 **하지 않는 한 (가, EXE 파일 f.e.을 경로를 수정하는 경우 Windows가 변화하고 다른 것을 확신 할 수 없기 때문에). – lospejos
@lospejos 어느 것 ... "나는 서비스를 다루는 특별한 Windows API 함수가 존재한다는 것을 언급해야한다"? 는 sc –
이 나쁜 대답이다. 많은 경로가 다음과 같이 MS SQL Server와 예를 들어, 입력 할 수있는 문자열을 인용 필요 : '사우스 캐롤라이나 설정 MSSQLSERVER binPath = "\"F : \ SQL DATA \ MSSQL10.MSSQLSERVER \ MSSQL \ BINN \ sqlservr.exe를 \ " -sMSSQLSERVER "' – Worthy7
당신을
sc qc <service name>
이 유사한 출력을 표시합니다 서비스를 삭제할 수 있습니다 :
sc delete ServiceName
그런 다음 서비스를 다시 만드십시오.
이 작업을 수행 할 필요가 없습니다를 벗은 sc'이 – Liam
또한 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")
또는 : 조금 더 깊이 'SC'명령을
Set-ItemProperty -Path "HKLM:\System\CurrentControlSet\Services\My Service" `
-Name ImagePath -Value "C:\Program Files (x86)\My Service\NewName.EXE"
, 우리는 모든 '서비스 이름을'추출 할 수 있고있어 모든 '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]
그런 다음,
>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]
원시 데이터 결과는이 다음과 같이이다, 그래서 '미래의 배치 파일을'공급을위한 준비가 .. 'CMD'로
을 계속!+ -------------+-------------------------+---------------------------+---------------+--------------------------------------------------+------------------+-----+----------------+--------------+--------------------+
| 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입니다
을하거나 '더 쉽게, 많이 sc'을 사용하여 적어도 3 개 더 나은 방법이있다 망칠 것 같지도 않고 – Liam
올바른 해답이 될 수 있어야 있기 때문에 –
그것은 또한 직접 레지스트리 수정 방법보다 배포 스크립트에서 아마 조금 좋네요. –
달콤한. reg에서 주위에 mucking보다 청결한. ** 참고 : 변경 사항을 보려면 services.msc를 닫고 열어야합니다. – yonsk