我在运行Windows 7,64位的计算机上安装了Delphi XE4。我试图遍历以下两个注册表项:
我编写了一个简单的程序,遍历上述每个注册表项中的所有子项。当我将目标系统设置为32Bit时,XE4会忽略注册表项#1,而是从注册表项#2中获取信息。当我将目标系统设置为64Bit时,XE4将两个注册表项都识别为独立且不同,并返回两组不同的数据。
当目标系统设置为32Bit时,为什么XE4会忽略注册表项#1并替换键#2?有没有办法在定位32Bit系统时读取#1键?
这让我觉得XE4-32Bit还有其他一些注册表项可以执行一些隐藏的替代。
答案 0 :(得分:2)
这与Delphi无关。这完全是关于Windows,特别是在64位Windows上运行32位进程的WOW64仿真器。
在64位计算机上在WOW64下运行的32位进程显示某些注册表项的32位视图。这由registry redirector透明地处理。请遵循该MSDN链接以了解有关重定向器的更多信息,并特别注意该部分,告诉您永远不要直接访问Wow6432Node。
您可以看到注册表的不同视图:
KEY_WOW64_64KEY
标志访问64位注册表视图。KEY_WOW64_32KEY
标志访问32位注册表视图。MSDN上详细介绍了这一点:Accessing an Alternate Registry View。