C# 注册表GetSubKeyNames()列出的键与Regedit不同?

C# 注册表GetSubKeyNames()列出的键与Regedit不同?,c#,wix,registry,C#,Wix,Registry,我们正在使用WIX安装我们创建的许多服务。我正在编写一个快速实用程序来转储当前安装的服务。我只是在以下子键上迭代: SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall 正在查找DisplayName。问题是,我的十项服务中只有两项出现在列表中 但是,当我查看Regedit中的子键时,它们就在那里。同样,它们也在已安装的程序中,我也可以在Win32_产品的SELECT*中找到它们 我查看了MSDN文档,试图找出我缺少的注册表的某些特殊视图。也

我们正在使用WIX安装我们创建的许多服务。我正在编写一个快速实用程序来转储当前安装的服务。我只是在以下子键上迭代:

SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall 
正在查找DisplayName。问题是,我的十项服务中只有两项出现在列表中

但是,当我查看Regedit中的子键时,它们就在那里。同样,它们也在已安装的程序中,我也可以在Win32_产品的SELECT*中找到它们

我查看了MSDN文档,试图找出我缺少的注册表的某些特殊视图。也许这是一个特权问题?但是我以管理员的身份运行这个工具。是否存在蜂箱安装问题

为了明确代码,以下是测试应用程序代码:


对此有何想法?

问题是32/64位的问题。似乎有些装置是在地下进行的

HKEY_LOCAL_MACHINE\Software\Wow6432Node\... 
当我把它们都列举出来时,我得到了我所有的安装


显然,我也可以将RegistryKey.OpenBaseKey与RegistryView.Registry64/32一起使用,而不是WOW6432节点。

您到底想做什么?此外,您应该将其标记为Wix。此外,请不要重复标题中的标记C。我确信您不认为GetSubKeyNames是一个C方法,但标题是这样读的。
HKEY_LOCAL_MACHINE\Software\Wow6432Node\...