如何使用C#代码在系统中安装应用程序?
遍历注册表项“ 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组件和更新,这可能对您很方便。