C#注册表项不在列表中
我有以下代码:C#注册表项不在列表中,c#,registry,registrykey,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.GetSu
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”不在软件的子键列表中。我知道它存在,因为我目前正在regedit中查看它。我已授予自己对整个软件密钥以及ProgramName密钥的完全控制权
作为参考,代码和regedit都同意我正在查看
Computer
L--HKEY_LOCAL_MACHINE
L--SOFTWARE
除此之外,SOFTWARE.getSubKeyNames()
还返回一组未出现在regedit中的名称。不知道这些是从哪里来的,总的来说,我更关心的是为什么我的程序名没有像应该的那样出现。您遇到了。64位Windows以静默方式重定向来自32位程序的某些注册表请求
您可以编译为64位程序,也可以在打开密钥时编译。您正在运行的程序。64位Windows以静默方式重定向来自32位程序的某些注册表请求
您可以编译为64位程序,也可以在打开密钥时编译。您正在运行的程序。64位Windows以静默方式重定向来自32位程序的某些注册表请求
您可以编译为64位程序,也可以在打开密钥时编译。您正在运行的程序。64位Windows以静默方式重定向来自32位程序的某些注册表请求
您可以作为64位程序进行编译,也可以在打开注册表项时进行编译。您是否能够手动检查/验证注册表中是否有
ProgramName
。。?也许你在这里遇到了一个案件敏感性问题。。由于在64位操作系统上编译32位,您是否尝试将FirstOrDefault()
更改为使用First()
注册表重定向?您是否编译为32位?密钥是否存在于Wow6432Node下?@Blorgbeard就是它。我没有考虑32/64点的不同。把它扔到答题纸上,我会把它标为正确的。谢谢伟大的我发布了一个答案。您是否能够手动检查/验证ProgramName
是否在注册表中。。?也许你在这里遇到了一个案件敏感性问题。。由于在64位操作系统上编译32位,您是否尝试将FirstOrDefault()
更改为使用First()
注册表重定向?您是否编译为32位?密钥是否存在于Wow6432Node下?@Blorgbeard就是它。我没有考虑32/64点的不同。把它扔到答题纸上,我会把它标为正确的。谢谢伟大的我发布了一个答案。您是否能够手动检查/验证ProgramName
是否在注册表中。。?也许你在这里遇到了一个案件敏感性问题。。由于在64位操作系统上编译32位,您是否尝试将FirstOrDefault()
更改为使用First()
注册表重定向?您是否编译为32位?密钥是否存在于Wow6432Node下?@Blorgbeard就是它。我没有考虑32/64点的不同。把它扔到答题纸上,我会把它标为正确的。谢谢伟大的我发布了一个答案。您是否能够手动检查/验证ProgramName
是否在注册表中。。?也许你在这里遇到了一个案件敏感性问题。。由于在64位操作系统上编译32位,您是否尝试将FirstOrDefault()
更改为使用First()
注册表重定向?您是否编译为32位?密钥是否存在于Wow6432Node下?@Blorgbeard就是它。我没有考虑32/64点的不同。把它扔到答题纸上,我会把它标为正确的。谢谢伟大的我贴出了答案。