我已经检查了其他一些回复,但据我所知,这是一个与我得到的点击不同的问题。
当我打开 RegEdit 时,我可以看到一组键,但是当我使用以下命令从程序中列出它们时:
Registry.LocalMachine.OpenSubKey(@"SOFTWARE").GetSubKeyNames()
其中一些失踪了。我认为这可能与访问权限有关,所以我检查了.CurrentUser
也。在那里也可以经历同样的行为。有些子项没有列出。
我缺少什么?
你的操作系统是 x64 吗?如果是这种情况,对于“LocalMachine\Software”,有两个不同的节点:x64 应用程序的 Normal 和 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
艾吉亚科技
酒精软
苹果电脑公司
苹果公司。
Aureal
Avira
Azureus
巴兹软件
C07ft5Y
Canon
Citrix
...
这是在 x64 中构建控制台应用程序时我的机器上的输出:
7-Zip
艾吉亚科技
苹果电脑公司
苹果公司。
ATI技术公司
Canon
Classes
Clients
...
如您所见,根据应用程序是 x86 还是 x64,输出会有很大差异。
EDIT:
A 类似的问题 https://stackoverflow.com/questions/8986295/weird-behaviour-when-reading-registry-in-c-sharp之前在 StackOverflow 上被问过。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)