我添加了一个注册表项,但无法以编程方式找到它
本文关键字:编程 方式找 添加 注册表 一个 | 更新日期: 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()
可能你只得到那些你能够写入。