C#注册表项不在列表中

时间:2014-10-13 20:59:48

标签: c# registry registrykey

我有以下代码:

RegistryKey SOFTWARE = Registry.LocalMachine.OpenSubKey((
    from x in Registry.LocalMachine.GetSubKeyNames()
    where x == "SOFTWARE"
    select x).FirstOrDefault());
RegistryKey Allworx = SOFTWARE.OpenSubKey((
    from x in SOFTWARE.GetSubKeyNames()
    where x == "ProgramName"
    select x).FirstOrDefault());

这编译并运行所有这一切,问题是" ProgramName"不在SOFTWARE子软件列表中。我知道它存在是因为我目前正在注册它。我已经完全控制了整个SOFTWARE密钥以及ProgramName密钥。

作为参考,代码和注册表都同意我正在寻找

Computer
  L--HKEY_LOCAL_MACHINE
       L--SOFTWARE

除了这个问题,SOFTWARE.getSubKeyNames()还返回了一堆没有出现在regedit中的名称。不知道这些来自哪里,总的来说,我更关心为什么我的程序名称没有像它应该出现的那样。

1 个答案:

答案 0 :(得分:3)

你遇到了registry redirection。 64位Windows以静默方式重定向来自32位程序的某些注册表请求。

您可以编译为64位程序,也可以在打开密钥时编译ask for the 64-bit view