我已经检查了其他一些关于SO的回复,但据我所知,这是一个与我得到的命中不同的问题。
当我打开RegEdit时,我可以看到一组键,但是当我使用例如我的程序列出它们时:
Registry.LocalMachine.OpenSubKey(@"SOFTWARE").GetSubKeyNames()
其中一些人失踪了。我认为这可能与访问权限有关,所以我也检查了.CurrentUser
。在那里可以体验到相同的行为。一些子项未列出。
我错过了什么?
答案 0 :(得分:3)
你的操作系统是x64吗?如果是这种情况,对于“LocalMachine \ Software”,有两个不同的节点:X64应用程序正常,x86应用程序Wow6432Node。
用于演示上述内容的示例应用程序。
using System;
using Microsoft.Win32;
namespace ConsoleApplication1
{
internal class Program
{
public static void Main()
{
String[] values = Registry.LocalMachine.OpenSubKey(@"SOFTWARE").GetSubKeyNames();
foreach (String value in values)
Console.WriteLine(value);
}
}
}
当在x86中构建控制台应用程序时,这是我机器上代码的输出:
的Adobe
AGEIA Technologies
酒精软
Apple Computer,Inc。
Apple Inc.
Aureal的
查杀
Azureus的
BazisSoft
C07ft5Y
佳能
思杰
...
当在x64中构建控制台应用程序时,这是我的机器上的输出:
的7-Zip
AGEIA Technologies
Apple Computer,Inc。
Apple Inc.
ATI Technologies
佳能
类
客户
...
如您所见,根据应用程序是x86还是x64,输出会有很大差异。
编辑: 之前在StackOverflow上询问了similar question。