ヤボ用で必要になったので。
ポイントはこんなとこ?
- 起点にするレジストリの場所はここ
 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);
}
実行したらこんな感じになった。
ちなみに、コントロールパネルの”プログラムのアンインストールまたは変更”の項目と一緒になったってのは確認できた。
んまま、明日への自分へのメモってことで。

