我如何获得注册密钥的真实路径?

Posted

技术标签:

【中文标题】我如何获得注册密钥的真实路径?【英文标题】:How do i get the true path to a reg key? 【发布时间】:2011-01-01 21:16:36 【问题描述】:

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

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

它实际上会从

获取密钥
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\XXX

而不是

HKEY_LOCAL_MACHINE\SOFTWARE\XXX

Progromatically 给定一个 RegistryKey,我如何计算出注册表中的真实路径?

【问题讨论】:

【参考方案1】:

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


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

【讨论】:

【参考方案2】:

它是程序是否针对 32 位或 64 位 Windows 编译以及它是否在 32 位或 64 位 Windows 上运行的函数。看看以下是否有帮助:

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

【讨论】:

以上是关于我如何获得注册密钥的真实路径?的主要内容,如果未能解决你的问题,请参考以下文章

什么是 android 中的生产密钥库,如何获得生产密钥库的路径?

如何从文件路径中提取目录路径?

SpringCloudGateWay修改请求路径,从注册中心获得服务

如何使用 Jquery 获取文件的真实路径 [重复]

如何在运行时获取 Java 应用程序的真实路径?

odbcjt32.dll 的真实路径是啥,System32 或 SysWOW64 检查它的参数