在64位系统上使用注册表。框架2.0

时间:2012-03-28 06:42:43

标签: c# .net winapi .net-2.0 registry

如何在64位系统中的 HKLM \ SOFTWARE 中获取子键列表?

P.S。如果我使用 Registry.LocalMachine.OpenSubKey("SOFTWARE\\", false) 然后我进入 HKLM \ SOFTWARE \ Wow6432Node

我可以使用.NET Framework不高于2.0

2 个答案:

答案 0 :(得分:1)

答案似乎非常复杂,可能有太多代码要放在Stack Overflow上。

摘要是您需要P / Invoke才能访问RegOpenKeyEx的本机Windows API调用,并确保传入标志KEY_WOW64_64KEY以始终访问64位注册表。 (KEY_WOW64_32KEY是始终访问32位的标志)

部分解决方案已发布在this blog entry

对于任何可以运行.NET 4.0的人,您可以使用新的支持:RegistryKey.OpenBaseKey(RegistryHive.LocalMachine,RegistryView.Registry64);

答案 1 :(得分:0)

您将获得正在运行或编译的应用程序的注册表。 如果您的目标是x86,那么您将始终在64位计算机上获得32位注册表(“Wow6432Node”)。 如果您的目标是AnyCPU,那么您将获得该机器架构的真实软件节点。