遍历注册表项“ SOFTWARE Microsoft Windows CurrentVersion
Uninstall”似乎可以提供已安装应用程序的完整列表。
除了下面的示例,您还可以找到与我在这里所做的相似的版本。
这是一个粗略的示例,您可能想要做一些事情来去除空白行,例如在提供的第二个链接中。
string registry_key = @"SOFTWAREMicrosoftWindowsCurrentVersionUninstall";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组件和更新,这可能对您很方便。



