一尘不染

在系统中获取已安装的应用程序

c#

如何使用C#代码在系统中安装应用程序?


阅读 345

收藏
2020-05-19

共1个答案

一尘不染

遍历注册表项“ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \
Uninstall”似乎可以提供已安装应用程序的完整列表。

除了下面的示例,您还可以找到与我在这里所做的相似的版本。

这是一个粗略的示例,您可能想要做一些事情来去除空白行,例如在提供的第二个链接中。

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组件和更新,这可能对您很方便。

2020-05-19