列出注册表值的问题

本文关键字:问题 注册表 | 更新日期: 2023-09-27 18:02:34

当我尝试列出注册表值时,它没有列出所有值。就像我做的:

RegistryKey regKey = Registry.LocalMachine.OpenSubKey("SOFTWARE''Microsoft''Windows NT''CurrentVersion");
foreach (string vName in regKey.GetValueNames())
{
     Console.WriteLine("Reg values: " + vName);
}

我得到的答案是:

Reg values: CurrentVersion
Reg values: CurrentBuild
Reg values: SoftwareType
Reg values: CurrentType
Reg values: InstallDate
Reg values: RegisteredOrganization
Reg values: RegisteredOwner
Reg values: SystemRoot
Reg values: InstallationType
Reg values: EditionID
Reg values: ProductName
Reg values: CurrentBuildNumber
Reg values: BuildLab
Reg values: BuildLabEx
Reg values: BuildGUID
Reg values: CSDBuildNumber
Reg values: PathName

当(如果我在注册表中查看)21行时,我只得到17行。

我做错了什么?谢谢你的回答。

列出注册表值的问题

这是因为您以32位运行应用程序,并且它被重定向到注册表中的Wow64节点。你需要改变你的应用程序到x64/Anycpu或 p调用Windows注册表api手动并传递KEY_WOW64_64KEY选项为samDesired在RegOpenKeyEx.

Edit:如评论者所述,如果您不想更改为AnyCPU/x64,您可以将KEY_WOW64_64KEY参数传递给. net函数,而无需诉诸Windows API。查看c#读取注册表:ProductID返回null在x86目标应用程序" Any CPU " works fine