首页 > 后端开发 > C++ > 如何在 C# 中检索已安装应用程序的完整列表?

如何在 C# 中检索已安装应用程序的完整列表?

Linda Hamilton
发布: 2025-01-24 23:46:11
原创
799 人浏览过

How Can I Retrieve a Complete List of Installed Applications in C#?

在 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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板