首页 >后端开发 >C++ >32 位应用程序如何访问 64 位注册表项?

32 位应用程序如何访问 64 位注册表项?

Mary-Kate Olsen
Mary-Kate Olsen原创
2025-01-04 13:28:39412浏览

How Can a 32-bit Application Access 64-bit Registry Keys?

从 32 位应用程序访问 64 位注册表项

在 64 位操作系统上执行时,OpenSubKey() 可能会失败返回对 regedit.exe 中可见的注册表项的引用。出现这种差异的原因是 32 位应用程序默认检查 HKLMSoftwareWow6432Node 分支而不是所需分支。

要访问 64 位版本的注册表,请显式指定RegistryView 参数:

using (var hklm = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry64))
using (var key = hklm.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall"))
{
   // The key now points to the 64-bit subkey branch
}

此技术确保 OpenSubKey() 函数以适当的注册表分支为目标,提供对子项的访问

对于 4.0 之前的 .NET 版本,可能需要利用 P/Invoke 才能与 32 位应用程序中的 64 位密钥进行交互。有关此方法的详细指南可以在以下位置找到:http://www.rhyous.com/2011/01/24/how-read-the-64-bit-registry-from-a-32-bit-application-or -反之亦然/

以上是32 位应用程序如何访问 64 位注册表项?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn