動作確認環境:Windows 10、C#、.NET Core 3.1
レジストリを直接参照して実行ファイル名の登録されたAppIDとその名前を取得するコードです。
using System; using System.Collections.Generic; using Microsoft.Win32; class Program { static void Main() { var exeNameAndAppId = GetRegistedExeNamesForAppID(); foreach ((string exeName, Guid appId) in exeNameAndAppId) { Console.WriteLine($"{exeName}: {appId.ToString("B")}"); } // ... // rundll32.exe: {de5d803e-5d2a-4b5f-9c63-af25a465cc44} // ... } static Dictionary<string, Guid> GetRegistedExeNamesForAppID() { using var hkcr = RegistryKey.OpenBaseKey(RegistryHive.ClassesRoot, RegistryView.Registry64); using var appIdsKey = hkcr.OpenSubKey("AppID"); var exeNameAndAppId = new Dictionary<string, Guid>(); foreach (var appName in appIdsKey.GetSubKeyNames()) { using var appIdKey = appIdsKey.OpenSubKey(appName); if (Guid.TryParseExact((string)appIdKey.GetValue("AppID", null), "B", out var guid)) { exeNameAndAppId.Add(appName, guid); } } return exeNameAndAppId; } }
AppIDレジストリキーの構造は以下を参照です。