首頁 > 後端開發 > 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系統上檢索已安裝應用程序的完整列表的兩種方法。 兩種方法都具有優勢和缺點,使您可以選擇最適合自己的需求。

>

方法1:註冊表枚舉>

此方法涉及直接訪問Windows註冊表。鍵

包含大多數已安裝應用程序的條目。 每個子鍵代表一個應用程序,SOFTWAREMicrosoftWindowsCurrentVersionUninstall>值提供了應用程序的名稱。 DisplayName

方法2:利用WMI(Windows Management Instrumentation)

> WMI提供了更具結構化的方法。 通過在查詢中使用,您可以檢索一個代表已安裝應用程序的

>實例的集合。

ManagementObjectSearcher代碼示例:SELECT * FROM Win32_Product ManagementObject

>註冊表方法:

WMI方法:

<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>
登入後複製

比較:

>
<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方法通常更快,但可能會錯過某些應用程序,尤其是那些未安裝的應用程序。 選擇取決於您對完整性和性能的特定要求。 考慮添加錯誤處理(如改進的註冊表示例中所示)以進行更健壯的解決方案。

>

以上是如何在C#中檢索已安裝應用程序的完整列表?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板