访问备用注册表视图
默认情况下,在 WOW64 上运行的 32 位应用程序将访问 32 位注册表视图,而 64 位应用程序将访问 64 位注册表视图。 以下标志使 32 位应用程序能够访问 64 位注册表视图中的重定向项,使 64 位应用程序能够访问 32 位注册表视图中的重定向项。 这些标志对共享注册表项没有影响。 有关详细信息,请参阅 受 WOW64 影响的注册表项。
标志名称 | 值 | 说明 |
---|---|---|
KEY_WOW64_64KEY | 0x0100 | 从 32 位或 64 位应用程序访问 64 位密钥。 |
KEY_WOW64_32KEY | 0x0200 | 从 32 位或 64 位应用程序访问 32 位密钥。 ARM 上的Windows 10:这是指 32 位 ARM 进程的 32 位 ARM 注册表视图,以及适用于 32 位 x86 和 64 位 ARM64 进程的 32 位 x86 注册表视图。 |
可以在以下注册表函数的 samDesired 参数中指定这些标志:
可以指定KEY_WOW64_32KEY或KEY_WOW64_64KEY。 如果同时指定了两个标志,则函数将失败并ERROR_INVALID_PARAMETER。
Windows Server 2008、Windows Vista、Windows Server 2003 和 Windows XP: 如果同时指定了两个标志,则函数的行为是未定义的。
RegDeleteKey 函数不能用于访问备用注册表视图。
以下是从应用程序访问注册表时的最佳做法:
- 应用程序使用标志之一访问备用注册表视图后, (创建、删除或打开子注册表项) 的所有后续操作都必须显式使用相同的标志。 否则,可能会有意外的行为。
- 若要准确枚举这两个视图中的所有键,请在两次传递中执行枚举。 第一个传递应使用一个标志打开的句柄,另一个通道应使用与另一个标志一起打开的句柄。
注意
保留 Wow6432Node 和 WowAA32Node 密钥。 为了保持兼容性,应用程序不应直接使用这些密钥。
有关通过 WMI 访问备用注册表视图的信息,请参阅 在 64 位平台上请求 WMI 数据。