是否可以确定给定的注册表项是否被重定向?如何确定注册表项是否被WOW64重定向?
我的问题是,我想从32位应用程序以通用方式枚举32位和64位注册表视图中的注册表项。我可以简单地打开每个键两次,首先使用KEY_WOW64_64KEY,然后使用KEY_WOW64_32KEY。但是,如果密钥没有重定向,则会给出完全相同的密钥,并最终枚举两次完全相同的内容;这是我想要避免的。
我的确发现了一些documentation,但它看起来像唯一的方法是检查配置单元并对密钥进行一堆字符串比较。我想到的另一种可能性是尝试在每个子项上打开Wow6432Node;如果它存在,则密钥必须重定向。即如果我试图打开HKCU \ Software \ Microsoft \ Windows,我会尝试打开以下键: HKCU \ Wow6432Node,HKCU \ Software \ Wow6432Node,HKCU \ Software \ Microsoft \ Wow6432Node和HKCU \ Software \ Microsoft \ Windows \ Wow6432Node。不幸的是,文档似乎暗示重定向的关键字的孩子不一定被重定向,因此路由也有问题。
那么,我在这里有什么选择?
理想情况下,我们希望将整件事重建为x64,但这仍然是我们前进的道路。与此同时,这是一种权宜之计。该应用程序基本上是一个系统信息/扫描仪组件。例如,检查注册表以查看各种运行键中的内容。我知道这些特定的键恰好被重定向,但我想要一个通用的方法来确定这个,所以我不必事先知道。 – Luke 2010-04-22 17:57:44
正如我所说,我相信正确的方法是使应用程序x64,但你可以用其他方式。查看我的编辑 – SergGr 2010-04-23 15:14:47
我已经知道如何访问不同的视图;问题在于无法确定给定密钥是否具有备用视图。尝试在没有密钥的密钥上打开备用视图会为您提供共享视图。 – Luke 2010-04-23 18:16:21