0

我正在尝试从我的应用程序中读取注册表项。它是一个 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)下的值为空,这个(SOFTWARE\WOW6432Node\Microsoft\Windows NT\CurrentVersion)下的值为“Microsoft”。但是消息框中的value64是空的!不应该是“微软”吗?

4

1 回答 1

0

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

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

我认为如果您指定RegistryView.Default它将根据调用进程的位数选择配置单元。

于 2013-07-22T12:52:47.617 回答