かなり古いPCでHKEY_CLASSES_ROOTに登録されたCLSIDのサブキーの一覧です。出現回数が5回未満のサブキーは除外しています。
回数 | サブキー |
---|---|
5000回以上 | InprocServer32 |
5000回未満100回以上 | ProgID、VersionIndependentProgID、TypeLib、Version、Implemented Categories、Programmable、LocalServer32、DefaultIcon、MiscStatus、ToolboxBitmap32、ShellFolder、InprocHandler32、Elevation、Control |
100回未満10回以上 | Instance、Containers、Insertable、NotInsertable、AuxUserType、shell、shellex、DataFormats、PersistentHandler、Verb、PersistentAddinsRegistered、Conversion、TreatAs、DocObject、DefaultExtension、AutoConvertTo、SupportedProtocols、Server、VirtualServerObjects、OLEScript |
10回未満5回以上 | BrowseInPlace、OLE DB Provider、ExtendedErrors、OverrideFileSystemProperties |
以下のソースコードでサブキーの名前と出現回数を取得して、手動で分類しています。
using System; using System.Collections.Generic; using System.Linq; using Microsoft.Win32; class Program { static void Main() { Dictionary<string, int> subKeyNames = new Dictionary<string, int>( StringComparer.OrdinalIgnoreCase); using var hkcr = RegistryKey.OpenBaseKey( RegistryHive.ClassesRoot, RegistryView.Registry64); using var clsidKey = hkcr.OpenSubKey("CLSID"); foreach (var keyName in clsidKey.GetSubKeyNames()) { using var key = clsidKey.OpenSubKey(keyName); foreach (var subKeyName in key.GetSubKeyNames()) { if (!subKeyNames.ContainsKey(subKeyName)) { subKeyNames[subKeyName] = 1; } else { subKeyNames[subKeyName] = subKeyNames[subKeyName] + 1; } } } foreach (var subKeyName in subKeyNames.OrderByDescending(entry => entry.Value)) { Console.WriteLine(subKeyName); } } }