如何使用c#代码获取系统中安装的应用程序?
最佳答案
遍历注册表项“SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall”似乎给出了已安装应用程序的完整列表。
除了下面的示例,您还可以找到与我所做的类似的版本 here .
这是一个粗略的示例,您可能想要像提供的第二个链接中那样删除空白行。
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.GetValue("DisplayName"));
}
}
}
或者,您可以使用前面提到的 WMI:
ManagementObjectSearcher mos = new ManagementObjectSearcher("SELECT * FROM Win32_Product");
foreach(ManagementObject mo in mos.Get())
{
Console.WriteLine(mo["Name"]);
}
但这执行起来相当慢,而且我听说它可能只列出安装在“ALLUSERS”下的程序,尽管这可能是不正确的。它还会忽略 Windows 组件和更新,这对您来说可能很方便。
关于c# - 获取系统中已安装的应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/908850/