【发布时间】:2014-08-14 12:05:14
【问题描述】:
我正在使用此代码列出所有已安装程序:
object line;
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))
{
line = subkey.GetValue("DisplayName");
if (line != null)
{
listBox1.Items.Add(line);
}
}
}
}
在 64 位 Windows 上,这会重定向到 Wow6432Node \Microsoft\Windows\CurrentVersion\Uninstall。但是有些程序条目仍然位于原始路径中,并且列表不完整。如何避免重定向并从 64 位 Windows 安装上的两个路径读取值(在 32 位 Windows 上只有第一个路径)?
【问题讨论】:
-
只允许您的程序作为 64 位进程运行。移除项目 + 属性,构建选项卡中的抖动强制。
标签: c# registry 64-bit .net-2.0