知識マップ: Windowsシェル統合の今 ── 右クリックメニュー・ファイル関連付け・Windows 11の変化
記事「Windowsシェル統合の今 ── 右クリックメニュー・ファイル関連付け・Windows 11の変化」の主張を、概念と関係(エッジ)に分解した知識グラフの全体です。各関係には根拠・確認日・確度が付いています。
右クリックメニューとファイル関連付けの土台は、拡張子キーがProgIDを指し、ProgID配下のshell\<verb>\commandがコマンドラインを持つという3段構造です。HKCRは独立したハイブではなくHKLMとHKCUのClassesを重ねた合成ビューなので、登録はどちらかを明示して書き、HKCRは読み取り用と割り切ります。既定アプリはユーザーが選ぶ設計で、UserChoiceのデータは難読化され、フィルタードライバーがアプリからの書き込みをブロックします。従来型シェル拡張はエクスプローラーのプロセス内に読み込まれるインプロセスCOM DLLなので、クラッシュも遅延もホストへ波及し、64bit環境では64bit DLLが必須で、マネージコードでの実装は非サポートです。Windows 11では新メニューに載るのがIExplorerCommandとパッケージ識別で登録されたコマンドだけになり、従来型は旧メニュー側へ退避されました。
flowchart LR
accTitle: Windowsのシェル統合(関連付けとコンテキストメニュー)の知識マップ
accDescr: 拡張子キーからProgID、verbへ至る3段構造と、HKCRが合成ビューであること、既定アプリがUserChoiceで保護されていること、従来型シェル拡張がインプロセスCOMであることの帰結、Windows 11でのメニュー二重化とIExplorerCommand+MSIX識別による新ルートを示す図
file_association_progid["拡張子キーとProgID"]
shell_verb["シェルのverb"]
hkey_classes_root["HKEY_CLASSES_ROOT(合成ビュー)"]
static_verb["静的verb"]
icontextmenu_extension["従来型シェル拡張(IContextMenu)"]
default_apps_registration["既定アプリ画面への登録"]
userchoice_protection["UserChoiceの保護"]
programmatic_default_change["既定アプリの機械的な変更"]
group_policy["グループポリシー"]
ui_thread_context["UIスレッドのコンテキスト"]
bitness_match_requirement["bitness一致要件"]
managed_code["マネージコード(.NET)"]
iexplorercommand["IExplorerCommand"]
win11_context_menu["Windows 11の新コンテキストメニュー"]
msix_package_identity["MSIXのパッケージ識別"]
sparse_package["外部の場所を指すpackaged(sparse package)"]
association_change["ファイル関連付けの変更"]
shchangenotify["SHChangeNotify(SHCNE_ASSOCCHANGED)"]
windows_sandbox["Windows サンドボックス"]
file_association_progid -->|"利用する"| shell_verb
file_association_progid -->|"で確認できる"| hkey_classes_root
shell_verb -->|"前提とする"| static_verb
static_verb -->|"より先に行うべき"| icontextmenu_extension
default_apps_registration -->|"前提とする"| file_association_progid
userchoice_protection -->|"防止する"| programmatic_default_change
userchoice_protection -->|"で構成できる"| group_policy
icontextmenu_extension -->|"前提とする"| ui_thread_context
icontextmenu_extension -->|"前提とする"| bitness_match_requirement
managed_code -->|"用いるのは非推奨"| icontextmenu_extension
iexplorercommand -->|"の後継"| icontextmenu_extension
win11_context_menu -->|"前提とする"| iexplorercommand
iexplorercommand -->|"前提とする"| msix_package_identity
sparse_package -->|"実装を担う"| msix_package_identity
association_change -->|"前提とする"| shchangenotify
file_association_progid -.->|"で確認できる"| windows_sandbox
概念間の関係(全16件)
図と同じ関係を文章でも列挙します。表示している文と機械可読な意味データ(RDFa)は同じ要素に載っています。確度が「確立した関係」のものは直接の関係として、「条件付きの関係」のものは成立条件つきの言明(rdf:Statement)として表現しています。
- 拡張子キーとProgIDはシェルのverbを利用します。
- 拡張子キーとProgIDはHKEY_CLASSES_ROOT(合成ビュー)で確認できます。
- シェルのverbは静的verbを前提とします。
- 静的verbは従来型シェル拡張(IContextMenu)より先に行うべきです。
- 既定アプリ画面への登録は拡張子キーとProgIDを前提とします。
- UserChoiceの保護は既定アプリの機械的な変更を防ぎます。
- UserChoiceの保護はグループポリシーで構成できます。
- 従来型シェル拡張(IContextMenu)はUIスレッドのコンテキストを前提とします。
- 従来型シェル拡張(IContextMenu)はbitness一致要件を前提とします。
- マネージコード(.NET)を従来型シェル拡張(IContextMenu)に用いることは推奨されません。
- IExplorerCommandは従来型シェル拡張(IContextMenu)の後継に当たります。
- Windows 11の新コンテキストメニューはIExplorerCommandを前提とします。
- IExplorerCommandはMSIXのパッケージ識別を前提とします。
- 外部の場所を指すpackaged(sparse package)はMSIXのパッケージ識別の実装を担います。
- ファイル関連付けの変更はSHChangeNotify(SHCNE_ASSOCCHANGED)を前提とします。
- 拡張子キーとProgIDはWindows サンドボックスで確認できます。
主要概念の定義
機械可読データ
このデータセットについて
このページはサイトの知識グラフ(_data/knowledge/)から自動生成されています。誤りの指摘はお問い合わせからお願いします。