我如何获得reg键的真实路径?

时间:2010-01-06 00:40:18

标签: .net windows registry 32bit-64bit

如果您在64位计算机上运行32位应用程序(我使用的是Windows 7)并且您编写此代码

RegistryKey key = Registry.LocalMachine.OpenSubKey(@"Software\XXX")

它实际上会从

获取密钥
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\XXX

而不是

HKEY_LOCAL_MACHINE\SOFTWARE\XXX

以Progromatically方式给出RegistryKey如何在注册表中计算出真正的路径?

2 个答案:

答案 0 :(得分:1)

这是真正的路径,32位应用程序将始终访问该子项中的注册表项。获得64位应用程序所看到的价值在技术上是可行的,而不是.NET。你必须P / Invoke RegOpenKeyEx()等,所以你可以指定KEY_WOW64_64KEY flag.


更新:使用RegistryKey.OpenBaseKey()在.NET 4.0中解决。 RegistryView参数允许您指定所需的视图。在这种情况下,您将使用RegistryView.Registry64。

答案 1 :(得分:0)

它是否为32或64位Windows编译程序以及它是否在32位或64位Windows上运行。看看下面是否有帮助:

http://social.msdn.microsoft.com/Forums/en-US/netfx64bit/thread/92f962d6-7f5e-4e62-ac0a-b8b0c9f552a3