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

pea*_*dog 6 c# registry registrykey

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

HKLM\SOFTWARE \富\酒吧

Bar有一对k/v对"wtf"/"idk".我通过关闭注册表并重新打开它来验证这些更改是"采取"的.嘿,他们还在那里!胀.

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

if (key != null)
{
    var = key.GetValue("wtf").ToString();
}
Run Code Online (Sandbox Code Playgroud)

问题是,key为null.

什么时候...

Registry.LocalMachine.OpenSubKey("Software").GetSubKeyNames()
Run Code Online (Sandbox Code Playgroud)

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

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

Mar*_*age 13

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

尝试将应用程序作为64位运行,或使用regedit使用路径打开密钥HKLM\SOFTWARE\Wow6432Node\Foo\Bar.

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


rie*_*sch 5

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