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

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

HKLM \ SOFTWARE \富\酒吧

Bar具有ak / v对“wtf”/“idk”。 我通过关闭注册表并重新打开它来validation这些更改“采取了”。 嘿,他们还在那里! 胀。

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

问题是,key为null。

什么时候。 。 。

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

被称为,Foo不会出现在众多的SubKeyNames中。

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

如果您在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()可能只会获得您能够写入的内容。