我添加了一个注册表项,但无法以编程方式找到它

本文关键字:编程 方式找 添加 注册表 一个 | 更新日期: 2023-09-27 18:08:21

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

HKLM ' Software ' Foo ' Bar

Bar有k/v对"wtf"/"idk"。我通过关闭regedit并重新打开它来验证这些更改"发生"了。嘿,他们还在那儿!膨胀。

RegistryKey key = Registry.LocalMachine.OpenSubKey(@"SOFTWARE'Foo'Bar");
if (key != null)
{
    var = key.GetValue("wtf").ToString();
}

问题是,key为空。

当…

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

被调用时,Foo不会出现在许多subkeyname中。

所以,我显然错过了一些愚蠢的东西。我具体错过了什么?

我添加了一个注册表项,但无法以编程方式找到它

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

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

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

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

尝试打开它为只读Registry.LocalMachine.OpenSubKey("Software", false).GetSubKeyNames()可能你只得到那些你能够写入。