1. ホーム
  2. c#

[解決済み] システムにインストールされたアプリケーションを取得する

2023-04-24 06:38:31

質問

c# コードを使ってシステムにインストールされたアプリケーションを取得するにはどうすればよいでしょうか。

どのように解決するのですか?

レジストリ キー "SOFTWAREMicrosoftWindowsCurrentVersionUninstall" を繰り返し実行すると、インストールされているアプリケーションの包括的なリストが得られるようです。

以下の例とは別に、私が行ったことと同様のバージョンを見つけることができます。 はこちら .

これは大まかな例で、おそらく提供された2番目のリンクのように、空白の行を取り除くために何かをしたいことでしょう。

string registry_key = @"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall";
using(Microsoft.Win32.RegistryKey key = Registry.LocalMachine.OpenSubKey(registry_key))
{
    foreach(string subkey_name in key.GetSubKeyNames())
    {
        using(RegistryKey subkey = key.OpenSubKey(subkey_name))
        {
            Console.WriteLine(subkey.GetValue("DisplayName"));
        }
    }
}

あるいは、これまで述べてきたように、WMIを使うこともできます。

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

しかし、これは実行速度がかなり遅く、間違っているかもしれませんが、"ALLUSERS" の下にインストールされたプログラムしかリストアップされないかもしれないと聞いたことがあります。また、Windows コンポーネントや更新プログラムを無視するので、あなたにとって便利かもしれません。