从 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中文网其他相关文章!