如何使用c#获取所有已安装的windows应用程序

时间:2015-08-20 05:10:31

标签: c# windows registry

我已尝试HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall将所有应用程序安装到我的计算机中并获取应用程序列表但我需要在添加或删除Windows程序功能时列出所有应用程序。

请帮我解决这个问题。

1 个答案:

答案 0 :(得分:2)

我认为您可以使用WMI,如下所示:

ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT * FROM Win32_Product");
foreach(ManagementObject mgmtObjectin searcher .Get())
{
    Console.WriteLine(mgmtObjectin ["Name"]);
}

另一个可能性是对32位应用程序使用SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Uninstall,对64位应用程序使用HKEY_LOCAL_MACHINE \ SOFTWARE \ Wow6432Node \ Microsoft \ Windows \ CurrentVersion \ Uninstall并合并列表,我认为你的代码应该看起来像:

string registry_key_32 = @"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall";
string registry_key_64 = @"SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall";

using(Microsoft.Win32.RegistryKey key = Registry.LocalMachine.OpenSubKey(registry_key_32))
{
    foreach(string name in key.GetSubKeyNames())
    {
        using(RegistryKey subkey = key.OpenSubKey(name))
        {
            Console.WriteLine(subkey.GetValue("DisplayName"));
        }
    }
}
// And...
using(Microsoft.Win32.RegistryKey key = Registry.LocalMachine.OpenSubKey(registry_key_64))
{
    foreach(string name in key.GetSubKeyNames())
    {
        using(RegistryKey subkey = key.OpenSubKey(name))
        {
            Console.WriteLine(subkey.GetValue("DisplayName"));
        }
    }
}

希望它有所帮助。