C#メモ インストールされているアプリケーションのリストを取得してみる
ヤボ用で必要になったので。
ポイントはこんなとこ?
- 起点にするレジストリの場所はここ
SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall - Microsoft.Win32.Registry.LocalMachine.OpenSubKey()で起点にするレジストリの情報を取得してくる
- さらにその子のレジストリの情報をとってこれればインストールしているアプリケーションがわかる
ただ、レジストリキーはOSで32bitか64bitかで違うとか…いろいろ前提があるみたい。
今回試した端末とビルドの条件はこんな感じ。
- Windows 10 64bit
- コードはAny CPUでビルド
で、コードはこんな感じ。
// アプリケーションのアンインストール情報が保存されている場所を指定する // ※場所は固定みたいなので今回は決め打ち string location = @"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall"; // レジストリの情報を取得する // ※取得できなかった場合は諦める Microsoft.Win32.RegistryKey parent = Microsoft.Win32.Registry.LocalMachine.OpenSubKey(location, false); if(parent == null) { throw new Exception("Unknown Registry Key..."); } // 子のレジストリの名前の数だけ処理をする foreach(string sub in parent.GetSubKeyNames()) { // 子のレジストリの情報を取得する // ※取得できなかった場合は諦めて次のレジストリを処理する Microsoft.Win32.RegistryKey child = Microsoft.Win32.Registry.LocalMachine.OpenSubKey(location + "\\" + sub, false); if (child == null) { continue; } // 表示名を保持しているオブジェクトを取得する // ※取得できなかった場合は諦めて次のレジストリを処理する object value = child.GetValue("DisplayName"); if(value == null) { continue; } // 表示名をコンソールに表示する string name = value.ToString(); Console.WriteLine(name); }
実行したらこんな感じになった。
ちなみに、コントロールパネルの"プログラムのアンインストールまたは変更"の項目と一緒になったってのは確認できた。
んまま、明日への自分へのメモってことで。
ディスカッション
コメント一覧
まだ、コメントがありません