无法从32位应用程序返回密钥的WOW6432版本

本文关键字:密钥 WOW6432 版本 返回 应用程序 32位 | 更新日期: 2023-09-27 18:24:28

我正在尝试从应用程序中读取注册表项。它是一个32位进程,在64位系统(Win7 64位)上运行。这是我的代码:

string value64 = string.Empty;
RegistryKey localKeyRegistryKey.OpenBaseKey(Microsoft.Win32.RegistryHive.LocalMachine, RegistryView.Registry64);    
localKey = localKey.OpenSubKey(@"SOFTWARE'Microsoft'Windows NT'CurrentVersion");
if (localKey != null)
{
    value64 = localKey.GetValue("RegisteredOrganization").ToString();
    MessageBox.Show(value64, "value64");
}

在我的系统中,此密钥(SOFTWARE''Microsoft''Windows NT''CurrentVersion)下的值为空,而此密钥(OFTWARE''WOW6432Node''Microsoft''Windows NT''CurrentVersion)下的数值为"Microsoft"。但是消息框中的值64为空!它不应该是"微软"吗?

无法从32位应用程序返回密钥的WOW6432版本

您正在指定RegistryView.Registry64,因此它将从SOFTWARE'Microsoft'Windows NT'CurrentVersion 中检索值

如果指定RegistryView.Registry32,它将从SOFTWARE'WOW6432Node'Microsoft'Windows NT'CurrentVersion中检索(即,在64位系统上;在32位系统上,WOW6432Node不存在,因此它将只使用普通配置单元)。

我认为,如果您指定RegistryView.Default,它将根据调用进程的比特度来选择配置单元。