注册表 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\ 是否显示所有子项
Does the registry HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\ show all subkeys
如果我打开此注册表并读出所有子项,则它与我的注册表编辑器显示的不同。
我打开注册表并读出所有子项的方式:
//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}
所以来到这个问题......
注册表编辑器是否显示所有子项?
如果对我的问题或评论有任何疑问,我很乐意听到!
它被称为 "Windows on Windows",这是设计使然。
就像Program Files
和Program Files (x86)
一样,WOW6432Node
键是特殊的。当 32 位进程尝试从 HKEY_LOCAL_MACHINE\SOFTWARE\
中读取时,它们会被定向到 HKEY_LOCAL_MACHINE\SOFTWARE\WoW6432Node
,这样它们就不会尝试意外地执行仅适用于 64 位进程的操作。
默认情况下,64 位 Windows 计算机上的 Regedit 会向您显示注册表的 64-bit view。
32 位应用程序 运行 在 64 位 Windows 上默认看到 32 位视图。这些项位于 64 位注册表的 SOFTWARE\WOW6432Node
下。
卸载信息存储在 64 位计算机注册表中的 4 个位置:在 64 位和 32 位视图中的 HKEY_CURRENT_USER
和 HKEY_LOCAL_MACHINE
根目录下。
应用程序可以通过在打开密钥时使用 KEY_WOW64_64KEY
或 KEY_WOW64_32KEY
标志来决定他们想要访问哪个视图。
如果我打开此注册表并读出所有子项,则它与我的注册表编辑器显示的不同。
我打开注册表并读出所有子项的方式:
//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}
所以来到这个问题......
注册表编辑器是否显示所有子项?
如果对我的问题或评论有任何疑问,我很乐意听到!
它被称为 "Windows on Windows",这是设计使然。
就像Program Files
和Program Files (x86)
一样,WOW6432Node
键是特殊的。当 32 位进程尝试从 HKEY_LOCAL_MACHINE\SOFTWARE\
中读取时,它们会被定向到 HKEY_LOCAL_MACHINE\SOFTWARE\WoW6432Node
,这样它们就不会尝试意外地执行仅适用于 64 位进程的操作。
默认情况下,64 位 Windows 计算机上的 Regedit 会向您显示注册表的 64-bit view。
32 位应用程序 运行 在 64 位 Windows 上默认看到 32 位视图。这些项位于 64 位注册表的 SOFTWARE\WOW6432Node
下。
卸载信息存储在 64 位计算机注册表中的 4 个位置:在 64 位和 32 位视图中的 HKEY_CURRENT_USER
和 HKEY_LOCAL_MACHINE
根目录下。
应用程序可以通过在打开密钥时使用 KEY_WOW64_64KEY
或 KEY_WOW64_32KEY
标志来决定他们想要访问哪个视图。