我正在处理的代码有 32 位和 64 位组件,它们需要在注册表中共享信息。因此,我试图在使用该NtOpenKey
函数(用户模式等效于ZwOpenKey
)时控制注册表重定向 - 我需要从 64 位代码调用此函数但访问 32 位注册表。(以前的代码只有 32 位,现在它正在升级到 64 位,所以我更喜欢尽可能多地使用现有代码——也就是说,我不想重写所有要使用的代码RegOpenKeyEx
。)
自然地,NtOpenKey
它不识别KEY_WOW64_32KEY
访问标志,这与高级注册表函数不同,因此无法指定重定向。
在这一点上,我能想到的唯一解决方案是Wow6432Node
在访问注册表时显式地硬编码键名;就像是:
\Registry\Machine\Software\Wow6432Node\MyCompanyKey\MyKey
不幸的是,这更像是一种黑客行为,微软特别不鼓励这样做。
这个问题有正确的解决方案吗?通读文档没有帮助,我也找不到任何相关的搜索结果。
编辑:只是一点额外的细节:我需要支持 Windows Server 2003 32 位/64 位、Windows 7/8 和 Windows Server 2008 32 位/64 位。(基本上所有从 Windows Server 2003 + Windows 7 及更高版本开始的服务器版本。)