2
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 regedit 创建密钥时,调用localMachineRegistry.OpenSubKey()返回null

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

4

1 回答 1

0

您是正确的,因为 32 位应用程序无法从“64 位”注册表中读取,它总是会获得位于Wow6432Node. 我怀疑这是因为从技术上讲,64 位注册表可能包含不适合 32 位进程的数据(即 64 位 DWORD)。

于 2013-09-11T17:48:02.123 回答