RegistryView.Registry64 从 32 位视图返回

本文关键字:视图 返回 Registry64 RegistryView | 更新日期: 2023-09-27 18:30:54

RegistryKey localMachineRegistry = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine,RegistryView.Registry64);
string[] list = localMachineRegistry.GetSubKeyNames();
RegistryKey key = localMachineRegistry.OpenSubKey(keyPath, false);
list = key.GetSubKeyNames();

我使用的是 64 位操作系统。我正在运行的进程是 32 位,但我知道注册表设置在 wow64 区域中。对localMachineRegistry.GetSubKeyNames()的调用返回 32 位信息,当我使用 wow64 注册表编辑器创建密钥时,对 localMachineRegistry.OpenSubKey() 的调用返回null

我能想到的只是一个32位进程不能使用RegistryView.Registry64,但我还没有读过。

RegistryView.Registry64 从 32 位视图返回

您是正确的,因为 32 位应用程序无法从"64 位"注册表中读取,它将始终获得位于Wow6432Node中的 32 位副本。 我怀疑这是因为从技术上讲,64 位注册表可能具有不适合 32 位进程(即 64 位 DWORD)的数据。