在 C# 中列出已安装应用程序的两种有效方法
本文详细介绍了使用 C# 检索 Windows 系统上已安装应用程序的完整列表的两种方法。 两种方法各有利弊,您可以选择最适合您需求的方法。
方法一:注册表项枚举
此方法涉及直接访问 Windows 注册表。键 SOFTWAREMicrosoftWindowsCurrentVersionUninstall
包含大多数已安装应用程序的条目。 每个子项代表一个应用程序,DisplayName
值提供应用程序的名称。
方法 2:利用 WMI(Windows 管理规范)
WMI 提供了一种更加结构化的方法。 通过将 ManagementObjectSearcher
与查询 SELECT * FROM Win32_Product
结合使用,您可以检索 ManagementObject
实例的集合,每个实例代表一个已安装的应用程序。
代码示例:
报名方式:
<code class="language-csharp">string registryKey = @"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall"; using (Microsoft.Win32.RegistryKey key = Registry.LocalMachine.OpenSubKey(registryKey)) { if (key != null) // Add null check for robustness { foreach (string subkeyName in key.GetSubKeyNames()) { using (RegistryKey subkey = key.OpenSubKey(subkeyName)) { if (subkey != null) // Add null check for robustness { object displayName = subkey.GetValue("DisplayName"); Console.WriteLine(displayName != null ? displayName.ToString() : "DisplayName not found"); } } } } }</code>
WMI 方法:
<code class="language-csharp">ManagementObjectSearcher mos = new ManagementObjectSearcher("SELECT * FROM Win32_Product"); foreach (ManagementObject mo in mos.Get()) { Console.WriteLine(mo["Name"]); }</code>
比较:
注册表方法通常提供更全面的列表,包括 Windows 更新和组件。然而,它的效率可能较低。 WMI 方法通常速度更快,但可能会丢失某些应用程序,特别是那些未安装在“ALLUSERS”配置文件下的应用程序。 选择取决于您对完整性和性能的具体要求。 考虑添加错误处理(如改进的注册表示例所示)以获得更强大的解决方案。
以上是如何在 C# 中检索已安装应用程序的完整列表?的详细内容。更多信息请关注PHP中文网其他相关文章!