如果我打开这个注册表,并读出所有子项,那么它与我的注册表编辑器显示不同。
我打开注册表并读出所有子键的方式:
//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}
所以提出问题.....
注册表编辑器是否显示所有子键?
如果对我的问题或评论有任何疑问,我很乐意听到!
答案 0 :(得分:3)
它被称为" Windows上的Windows"以及它的设计。
就像Program Files
和Program 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_USER
和HKEY_LOCAL_MACHINE
根。
应用可以在打开密钥时使用KEY_WOW64_64KEY
或KEY_WOW64_32KEY
标记来决定他们想要访问哪个视图。