2012-09-04 5 views
0

Wix 3.5를 사용하여 Windows 서비스를 실행하는 사용자를 얻는 기본 제공 기능이 있는지 알고 싶습니다. 난 this post 거기에 아무것도 서비스 상태를 확인하기 위해 윅스에 내장되어 있다고 봤어요. 나는 이것이 가능하지 않다면, 서비스를 실행하는 사용자를 얻는 것이 훨씬 더 불가능하다고 생각한다. 사용자 지정 작업을 사용하는 것이 최후의 수단입니다. 감사합니다. .Wix 실행중인 Windows 서비스에서 사용자 가져 오기

답변

1

HKLM \ SYSTEM \ CurrentControlSet \ Services \ ServiceName | ObjectName에 대한 레지스트리 검색을 수행 할 수 있지만 서비스를 다시 시작하지 않고 레지스트리 값을 업데이트 한 것으로 간주되지 않습니다. (잠재적 인 연결 해제).

프로그래밍 방식으로 (사용자 지정 작업) SCM API (win32) 또는 WMI (win32_service 클래스 StartName 특성)와 상호 작용하여 자세한 정보를 얻을 수 있습니다.

CA의 피하기에 동의하지만 CA의 유일한 목적이 컴퓨터 상태를 변경하지 않고 데이터를 변경하는 것이라면 약간의 단점을 고려하여 매우 견고하게 수행 할 수 있습니다.

+0

답변 해 주셔서 감사합니다. 나는 당신이 언급 한 레지스트리 지점을 정말 유용하다고 생각했다. 이 부분에 대해 설명해주십시오 : "하지만 서비스를 다시 시작하지 않고 레지스트리 값을 업데이트 한 것으로 가정하지는 않습니다." 또한 나는 "DOMAIN \ USERNAME"형식의 값을 레지스트리에서 얻는 것을 깨달았다. USERNAME 부분 만 필요하므로 값의 "부분 문자열"을 사용해야합니다. 나는 Wix에서 이것을 할 수 없다는 것을 보았다. 어쨌든 RegitryValue를 포맷팅하기 위해 커스텀 액션이 필요합니다. – Herno

+0

사용자를 bob으로 설정하고 서비스를 시작하면 서비스가 bob으로 실행됩니다. 그 다음에 ed로 설정하면 서비스를 중지하고 다시 시작할 때까지 bob으로 계속 실행됩니다. 두 번째 부분에서는 Windows Installer에 문자열 splt capabiltiy이 없으므로 WiX에는 아무 것도 없습니다. 한 속성을 읽고 구문 분석 한 다음 다른 속성에 작성한 사용자 지정 동작을 작성해야합니다. –

+0

감사합니다. 대답은 매우 유용합니다. 결국 나는 어쨌든 CA를 구축해야 할 것입니다. – Herno

관련 문제