意外的注册表重定向[英] Unexpected Registry redirection

问题描述

我正在使用 .reg 文件将密钥写入注册表.密钥被视为转到

HKEY_LOCAL_MACHINE\SOFTWARE

在我的 Windows 7 64 位机器上,这工作正常.我可以使用 RegOpenKeyEx(..., KEY_READ | KEY_WOW64_64KEY, ...) 读取密钥.

无论如何,在另一个 Windows 7 64 位上,它们会转到注册表的 32 位反映部分
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node

反而.在这种情况下,我需要使用 RegOpenKeyEx(..., KEY_READ | KEY_WOW64_32KEY, ...).

.reg 文件如下所示:
Windows 注册表编辑器版本 5.00[HKEY_LOCAL_MACHINE\SOFTWARE\Company\Product]"ComputerName"="计算机名"

我无法弄清楚是什么导致了类似机器上的不同行为.

任何提示?

推荐答案

我认为您可能需要删除 KEY_WOW64_64KEY 选择器;请参阅此处[^]'' 对这些功能的解释.

1) .REG 文件与 WOW/64 位重定向的符号所在位置无关.

2) *处理* .REG 文件的应用程序最终将成为决定因素.

3) 如果你通过 regedit32 运行 REG 文件,它将进入 WOW 重定向区域.如果您通过 regedit64(或默认的 regedit 应用程序)运行它,它将进入正常位置.

4) 你不应该*直接对 WOW 键进行编码.如果您的代码必须知道密钥是否被重定向,那么您正在混合 32 位和 64 位应用程序,这种情况可能会发生,但这种情况非常罕见,以至于您最终所做的只是让自己感到困惑.Windows 将根据您的应用程序的"位数"确定查找位置.

本文地址:https://www.itbaoku.cn/post/1394815.html