우리는 WIX를 사용하여 우리가 작성한 많은 서비스를 설치하고 있습니다. 현재 설치된 서비스를 덤프 할 수있는 빠른 유틸리티를 작성 중입니다. 하위 키를 반복합니다.
SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall
찾고있는DisplayName
. 문제는 내 10 개의 서비스 중 2 개만 목록에 표시된다는 것입니다.
그러나 Regedit의 하위 키를 보면 거기에 있습니다. 또한, 그들은 설치된 프로그램에 있습니다 (그리고 나는 Win32_Product에서도 SELECT *로 찾을 수 있습니다).
필자는 MSDN 문서를 살펴 보았습니다. 필자가 누락 한 레지스트리에 대한 특별한 견해가 있는지 알아 내려고했습니다. 어쩌면 특권 문제일까요? 하지만 관리자로 도구를 실행하고 있습니다. 하이브 마운팅 문제가 있습니까?
코드로 명확히하기 위해, 여기 테스트 애플 리케이션 코드가있다.이 대답) :
String registryKey = @"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall";
using(Microsoft.Win32.RegistryKey key = Registry.LocalMachine.OpenSubKey(registryKey))
{
foreach(String subkeyName in key.GetSubKeyNames())
Console.WriteLine(key.OpenSubKey(subkeyName).GetValue("DisplayName"));
}
이것에 대한 어떤 생각?
문제는 32/64 비트 문제입니다. 설치 중 일부가
HKEY_LOCAL_MACHINE\Software\Wow6432Node\...
둘 모두를 열거하면 모든 설치가 완료됩니다.
분명히 나는 또한 사용할 수 있습니다.RegistryKey.OpenBaseKey()
~와RegistryView.Registry64/32
대신에Wow6432Node
너무.
GetSubKeyNames
C #방법이지만 제목은 그런 식으로 읽습니다. - John Saunders