我有以下代码:
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中的名称。不知道这些来自哪里,总的来说,我更关心为什么我的程序名称没有像它应该出现的那样。
答案 0 :(得分:3)
你遇到了registry redirection。 64位Windows以静默方式重定向来自32位程序的某些注册表请求。
您可以编译为64位程序,也可以在打开密钥时编译ask for the 64-bit view。