2013-08-05 2 views
0

제품 코드 GUID를 사용하여 설치된 응용 프로그램의 제품 버전을 찾아야합니다. 어떤 종류의 간단한 API 호출을 사용하여이를 수행하는 방법이 있습니까? P/Invoke 및 WindowsInstaller 네임 스페이스를 사용하여이를 수행하는 방법을 찾았지만 P/Invoke 사용을 피하려고합니다.C#의 제품 코드에서 제품 버전 가져 오기

답변

1

Windows Installer는 발견 한대로 Win32 API 함수 (P/Invoke)를 노출합니다. 또한 이러한 API를 래핑하는 COM 자동화 인터페이스가 있지만 이것은 덜 우아하다고 생각할 수 있습니다. Windows Installer XML (WiX) DTF (Deployment Tool Foundation)에는 관리 코드로 랩핑하는 MSI interop 라이브러리가 있지만 커버 아래에서 수행중인 작업을 추측 할 수 있습니다. P/Invoke.

레지스트리에서 가져 오는 방법이 있지만 공식 API가 아니며 덜 우아합니다.

귀하의 질문에 대답하기 위해, 당신은 이미 매우 훌륭하고 전문적인 방법으로 그것을하고 있습니다.

+0

이 이야기에 도덕적 인 것은 P \ Invoke를 두려워해서는 안된다는 것입니다. 그것은 안전하고 쉽고 강력합니다. – rharrison33

0

당신이 그것을 몰래 레지스트리를 들여다 볼 수 있습니다.
HKLM \ 소프트웨어 \ 마이크로 소프트 \ 윈도우 \ CurrentVersion \ 제거 \ < munged - 제품 코드 >
또는
HKLM \ SOFTWARE \ Wow6432Node 마이크로 소프트 \ WINDOWS \ \ CurrentVersion을 \ MSI는 윈도우를 설치하면 아래 레지스트리 키의 집합을 생성 < munged-제품 코드 >
\ 제거하는 것이 레지스트리 위치에서

(컴퓨터/MSI의 비트 수에 따라서) "PRODUCTVERSION"라는 이름의 레지스트리 값이 있어야합니다. 트릭은 윈도우 GUID를 '쌓아 놓는'방법을 알고있는 것입니다 (http://www.vmwareinfo.com/2011/09/surgically-eliminating-windows.html 참조).

관련 문제