7

所以我使用 RegEdit 将以下内容添加到我的工作站上的注册表中:

HKLM\Software\Foo\Bar

酒吧有 ak/v 对“wtf”/“idk”。我通过关闭 regedit 并重新打开它来验证这些更改是否“发生”。嘿,他们还在!胀。

RegistryKey key = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Foo\Bar");

if (key != null)
{
    var = key.GetValue("wtf").ToString();
}

问题是,键为空。

什么时候。. .

Registry.LocalMachine.OpenSubKey("Software").GetSubKeyNames()

被调用,Foo 并没有出现在许多 SubKeyNames 中。

所以,我显然错过了一些愚蠢的东西。我特别想念什么?

4

3 回答 3

14

如果您在 64 位版本的 Windows 上运行 32 位进程,则 32 位进程(您的测试应用程序)并不总是能够看到您使用 64 位 regedit 创建的密钥。

尝试以 64 位运行您的应用程序或使用 regedit 使用路径打开密钥HKLM\SOFTWARE\Wow6432Node\Foo\Bar

您可以在 MSDN 上的注册表中阅读有关32 位和 64 位应用程序数据的更多信息。

于 2011-09-09T15:16:25.410 回答
4

可能是 x64 问题?在 x86 进程中从注册表读取时,您将被重定向到 Software\Wow6432node。

于 2011-09-09T15:15:55.103 回答
1

尝试以只读方式打开它,Registry.LocalMachine.OpenSubKey("Software", false).GetSubKeyNames()可能您只能获得能够写入的内容。

于 2011-09-09T15:21:18.480 回答