2011-03-21 2 views
0

현재 값을 기준으로 기존 서비스의 시작 유형 (예 : 자동, 수동 또는 사용 안 함)을 수정해야하는 InstallScript 설치 관리자가 있습니다. 예를 들어 현재 시작 유형이 사용 안 함으로 설정된 경우에는 그대로 두어도 그렇지 않으면 자동으로 설정할 수 있습니다.InstallShield에서 서비스의 시작 유형을 얻으려면 어떻게합니까?

불행히도 서비스의 시작 유형을 얻는 방법을 찾을 수 없습니다. 서비스가 있는지 (ServiceExistsService) 검색하고 현재 시작/중지 상태 (ServiceGetServiceState)를 얻는 기능이 있지만 서비스의 매개 변수를 검색하는 것은 없습니다. 아마도 이러한 함수 중 하나를 호출하면 부작용으로 SERVICE_IS_PARAMS 구조체가 채워질 것이라고 생각했지만 그럴 것 같지 않습니다.

서비스의 시작 유형을 어떻게 얻을 수 있습니까?

+0

아마도 시작 유형을 수동으로 검색하는 사용자 지정 작업이 최선의 해결책 일 수 있습니다. –

답변

1

정확하지는 않지만 실제로는 HKLM\System\CurrentControlSet\Services\TheServiceName에서이 정보를 읽는 것이 쉬워야합니다. 특히 DWORD Start에는 시작 유형이 포함되어 있습니다. 레지스트리에서이 값을 직접 변경하면 다시 부팅 할 때까지 영향을 미치지 않으므로 API를 사용하여 변경 사항을 적용하는 것이 좋습니다.

"right"일을하고 싶다면 Advapi32.QueryServiceConfig에 도착하는 데 필요한 구조와 기능을 선언 할 수 있습니다. 이는 레지스트리 위치 또는 기본 저장소를 변경 한 모든 Windows 버전을 지원합니다 (예상하지 못한 것이지만 가능한 것으로 간주되어야 함).

0

더 느리지 만 실수가 없어야하는 또 다른 옵션은 'service MyServiceName get StartMode'매개 변수로 WMIC.exe를 시작하고 출력을 파일로 리디렉션하는 것입니다. 그런 다음 파일을 읽고 두 번째 줄에 대답 (자동/수동/사용 안 함)이 포함되어 있어야합니다.

관련 문제