注册表HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Uninstall \是否显示所有子项

时间:2018-06-04 15:12:05

标签: c# .net winapi registry registrykey

如果我打开这个注册表,并读出所有子项,那么它与我的注册表编辑器显示不同。

我打开注册表并读出所有子键的方式:

//Get all results of the specified registery
string registry_key = @"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall";
using (Microsoft.Win32.RegistryKey key = Registry.LocalMachine.OpenSubKey(registry_key))
{
     foreach (string subkey_name in key.GetSubKeyNames())
     {
         using (RegistryKey subkey = key.OpenSubKey(subkey_name))
         {
             Console.WriteLine(subkey.Name);
         }
     }   
}

这为我提供了此注册表项中所有子项的输出。

作为例子,我将拿出一个:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{FDCFD759-BA24-F0C8-FE83-43513EE6D443}

当我检查我的注册表编辑器时。并且搜索此示例它不在给定位置,但它位于:

HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{FDCFD759-BA24-F0C8-FE83-43513EE6D443}

所以提出问题.....

注册表编辑器是否显示所有子键?

如果对我的问题或评论有任何疑问,我很乐意听到!

2 个答案:

答案 0 :(得分:3)

它被称为" Windows上的Windows"以及它的设计。

就像Program FilesProgram Files (x86)一样,WOW6432Node键是特殊的。当32位进程尝试从HKEY_LOCAL_MACHINE\SOFTWARE\读取时,它们会被定向到HKEY_LOCAL_MACHINE\SOFTWARE\WoW6432Node,因此他们不会尝试意外地执行仅适用于64位进程的操作。

答案 1 :(得分:1)

默认情况下,64位Windows计算机上的Regedit会显示注册表的64-bit view

在64位Windows上运行的32位应用程序默认情况下会看到32位视图。这些密钥位于64位注册表中的SOFTWARE\WOW6432Node下。

卸载信息存储在64位计算机上的注册表中的4个位置:64位和32位视图中的HKEY_CURRENT_USERHKEY_LOCAL_MACHINE根。

应用可以在打开密钥时使用KEY_WOW64_64KEYKEY_WOW64_32KEY标记来决定他们想要访问哪个视图。