>在C#
中列出已安裝應用程序的兩種有效方法>本文詳細介紹了使用C#在Windows系統上檢索已安裝應用程序的完整列表的兩種方法。 兩種方法都具有優勢和缺點,使您可以選擇最適合自己的需求。
>方法1:註冊表枚舉>
此方法涉及直接訪問Windows註冊表。鍵包含大多數已安裝應用程序的條目。 每個子鍵代表一個應用程序,SOFTWAREMicrosoftWindowsCurrentVersionUninstall
>值提供了應用程序的名稱。 DisplayName
> 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中文網其他相關文章!