명령 프롬프트를 통해 실행 파일의 경로에 대한 Windows 서비스를 쿼리해야합니다. 나는 길을 생각하는 것이다 이렇게는 다음과 같습니다 sc qc myServiceName
,하지만 난 그렇게 할 때, 나는 다음과 같은 오류가 발생합니다 :
[SC] QueryServiceConfig 실패 122 :
시스템 호출로 전달 된 데이터 영역이 너무 작습니다.
[SC] GetServiceConfig는 1094 바이트가 필요합니다
sc 명령이 반환 해야하는 데이터에 비해 너무 작은 다른 라이브러리로 데이터 구조를 보내는 중이라고 생각합니다. SC가 더 큰 데이터 구조 (1094 바이트)로 멋지게 다시 시도하는 대신 폭탄이 터져 나쁘게 오류 메시지가 표시됩니다. 감사합니다 Micro $ oft.
이 오류를 해결하는 방법이 있습니까? 실행 파일 경로가 필요하지만 필요한 경우 다른 텍스트에서 파싱합니다.
답변
실행 파일 경로가 매우 긴 서비스의 세부 정보를 얻으려고 할 때도이 문제가 발생했습니다. 이 토론 에는 해결 방법 이 포함되어 있습니다. 에 버퍼 크기를 인수로 전달할 수 있습니다 sc qc
. 즉, 당신이 할 경우 :
sc qc <service name> 5000
“시스템 호출에 전달 된 데이터 영역이 너무 작습니다”오류가 사라집니다.
SC QC MSDN 페이지 도 참조 하십시오.
sc [<ServerName>] qc [<ServiceName>] [<BufferSize>]
어디:
<BufferSize> 버퍼의 크기 (바이트)를 지정합니다. 기본 버퍼 크기는 1,024 바이트입니다.
답변
실행 가능한 솔루션을 찾았습니다.
reg query "HKLM\System\CurrentControlSet\Services\<serviceName>" /v "ImagePath"
물론 이것은 약간의 구문 분석이 필요하지만 services.msc 대화 상자가 제공하는 전체 경로를 제공합니다.
답변
PowerShell에서 다음과 같은 WMI 쿼리를 사용하여이 작업을 수행 할 수 있습니다.
$service = get-wmiobject -query 'select * from win32_service where name="winrm"'; echo $service.pathname
services.msc에 표시된 옵션을 포함하여 전체 경로를 제공합니다. winrm
예제에서 검색하려는 서비스로 바꾸십시오 .
위의 쿼리 winrm
는 출력해야합니다.C:\Windows\System32\svchost.exe -k NetworkService
답변
wmic
명령 행 유틸리티를 사용하여 시도하십시오 . 다음은 내 컴퓨터의 서비스 예입니다 CrashPlanService
.
C:\Users\Ben>wmic service CrashPlanService get PathName
PathName
"C:\Program Files\CrashPlan\CrashPlanService.exe"
기본적으로 wmic service <<YourService>> get PathName
.