如果您在64位计算机上运行32位应用程序(我使用的是Windows 7)并且您编写此代码
RegistryKey key = Registry.LocalMachine.OpenSubKey(@"Software\XXX")
它实际上会从
获取密钥HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\XXX
而不是
HKEY_LOCAL_MACHINE\SOFTWARE\XXX
以Progromatically方式给出RegistryKey如何在注册表中计算出真正的路径?
答案 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