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

本文关键字:注册表 框架 64位 系统 | 更新日期: 2023-09-27 18:29:09

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

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

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

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

答案似乎很复杂,可能太多的代码无法放在Stack Overflow上。

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

部分解决方案已发布在此博客条目中。

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

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