无法从注册表中读取某些值

时间:2011-10-31 03:15:25

标签: c# registry

在我的C#应用​​程序中,我无法阅读一些注册表项,

RegistryKey key = Registry.LocalMachine.OpenSubKey("Software\\NameOfSoftware\\");

RegistryKey key1 = Registry.LocalMachine.OpenSubKey("Software\\NameOfSoftware\\Version1\\Databases");

RegistryKey key2 = Registry.LocalMachine.OpenSubKey("Software\\NameOfSoftware\\Version2\\Databases");

第一个是主键,key1和key2是子键。我可以读取key1,但不能读取key2。

我可以使用regedit在注册表中看到两个键。如果我这样做很有意思,

key.GetSubKeyNames()

我得到一个这样的列表,

Version1,
SomethingElse1
SomethingElse2

哪里的'SomethingElse'键是我用regedit看不到的键?版本2显然也不见了,但我可以通过regedit看到它。

更新: 所以澄清一些事情。工作的关键(Version1)已经存在。添加了Version2,因为我导出了Version1键,编辑了文件以将Version1替换为Version2并将其重新导入。那么如何在没有此问题的情况下复制密钥呢?

1 个答案:

答案 0 :(得分:1)

听起来您可能正在Vista(或更高版本,例如Win7或WS2008)上运行C#应用程序,并且正在运行注册表权限。这篇文章可能很有用:

http://msdn.microsoft.com/en-us/magazine/cc982153.aspx

您可能还面临一个相关问题,“注册表虚拟化”:

http://msdn.microsoft.com/en-us/library/aa965884.aspx