C# インストールされているプログラムのリストを取得する(Microsoft.Win32.Registryクラス)

   

「プログラムのインストール状態」といっても、PC内の入れて使っているものすべてではなく、Windowsインストーラなどでインストールしたプログラムだけが対象です。

ただ、取得する一覧は「インストールしたプログラム」と言いたいところですが、実は「アンインストールするプログラムの一覧」になります。

インストーラなどでインストールしたプログラムは、Windowsの「アプリと機能(Windows10の場合)」でアンインストールできるプログラムのリストとして表示されます。

 

プログラムのリストはどこで覚えてる?

「アプリと機能(Windows10の場合)」で取り扱うプログラムのリストは、レジストリに記録されています。

C#でレジストリを取り扱うのは Microsoft.Win32名前空間 にあるクラス群を使用します。

 

C#でのレジストリの取得方法

C#でレジストリの情報を取得するには、

  • キーを開いてレジストリを取得する
  • 子を探すときはさらにその中のサブキーを開いてレジストリを取得する
  • 目的のレジストリが見つかったら、そのレジストリ内の値などを取得する

というのが基本の処理になります。

 

アンインストール情報のレジストリ情報を取得する

アンインストール情報のレジストリキーは、

の下にサブキーとして並んでいます。

サンプルコードは下記のようになります。

今回はレジストリから取得するのはプログラムの一覧で”文字列”なので、文字列の配列として取得するメソッドにしてみました。

 

なぜインストールされているプログラムを知るのか

この「アプリと機能」の一覧の中には、C++ランタイムや.NET Framework、Windowsの更新プログラムなどのMicrosoftが提供しているプログラムがあり、PCの環境調査に利用できるからです。

 

 - 未分類