知識マップ: Reg-Free COMとは - 登録不要でCOMを使う仕組み
記事「Reg-Free COMとは - 登録不要でCOMを使う仕組み」の主張を、概念と関係(エッジ)に分解した知識グラフの全体です。各関係には根拠・確認日・確度が付いています。
Reg-Free COMは、COMの登録情報をレジストリではなくマニフェストで持たせ、実行時にはアクティベーション コンテキストを先に見てDLLを解決する仕組みです。アプリケーション マニフェストが依存先のside-by-side assemblyを宣言し、コンポーネント マニフェストがCLSIDやProgIDなど本来レジストリにあった情報を持つという分担で、mt.exeで埋め込み、sxstraceで解決失敗を追跡します。ただし32bit/64bitの一致要件は解消されず、依存DLLや型ライブラリの扱いは別論点として残るため、VB6・MFC・WinFormsのような既存デスクトップ資産のアプリローカル化には向く一方、マシン全体でのCOM共有を必要とする場面には向きません。.NET 5+/.NET 8ではEnableComHostingでcomhostを作り、EnableRegFreeComを有効にすることでReg-Free COM用のside-by-sideマニフェストを出力できます。
flowchart LR
accTitle: Reg-Free COMの知識マップ
accDescr: Reg-Free COMがアクティベーション コンテキストとside-by-side assemblyの仕組みでCOMの登録情報をアプリ単位に持たせること、アプリケーション マニフェストとコンポーネント マニフェストの役割分担、mt.exeによる構成とsxstraceによる障害調査、.NET 5+のcomhostとの関係を示す図
reg_free_com["Reg-Free COM(登録不要COM)"]
activation_context["アクティベーション コンテキスト"]
win32_application_manifest["アプリケーションマニフェスト(Win32 side-by-side)"]
component_manifest["コンポーネント マニフェスト(assembly manifest)"]
side_by_side_assembly["side-by-side assembly"]
bitness_match_requirement["bitness一致要件"]
regsvr32["regsvr32"]
type_library["型ライブラリ(TLB)"]
mt_exe["mt.exe(マニフェスト ツール)"]
sxstrace["sxstrace"]
assembly_searching_sequence["private assemblyの探索順序"]
dotnet[".NET(Core以降)"]
comhost["COM host(*.comhost.dll)"]
enable_com_hosting["EnableComHosting"]
enable_regfreecom["EnableRegFreeCom"]
vb6["Visual Basic 6.0(VB6)"]
clsid["CLSID(Class ID)"]
progid["ProgID(Programmatic Identifier)"]
com["COM(コンポーネントオブジェクトモデル)"]
activex["ActiveX"]
ocx["OCX"]
mfc["MFC(Microsoft Foundation Classes)"]
windows_forms["Windows Forms"]
machine_wide_com_sharing["COMのマシン全体共有"]
reg_free_com -->|"利用する"| activation_context
reg_free_com -->|"利用する"| win32_application_manifest
reg_free_com -->|"利用する"| component_manifest
win32_application_manifest -->|"前提とする"| side_by_side_assembly
component_manifest -->|"実装を担う"| side_by_side_assembly
reg_free_com -->|"前提とする"| bitness_match_requirement
reg_free_com -.->|"の後継"| regsvr32
component_manifest -.->|"利用する"| type_library
reg_free_com -->|"で構成できる"| mt_exe
reg_free_com -->|"で確認できる"| sxstrace
component_manifest -->|"で構成できる"| mt_exe
reg_free_com -->|"前提とする"| assembly_searching_sequence
dotnet -.->|"利用する"| comhost
comhost -->|"前提とする"| enable_com_hosting
comhost -->|"で構成できる"| enable_regfreecom
enable_regfreecom -->|"実装を担う"| reg_free_com
vb6 -.->|"利用する"| type_library
component_manifest -->|"利用する"| clsid
component_manifest -.->|"利用する"| progid
reg_free_com -->|"利用する"| com
reg_free_com -->|"利用する"| activex
reg_free_com -->|"利用する"| ocx
reg_free_com -->|"推奨される対応"| vb6
reg_free_com -->|"推奨される対応"| mfc
reg_free_com -->|"推奨される対応"| windows_forms
reg_free_com -->|"用いるのは非推奨"| machine_wide_com_sharing
概念間の関係(全26件)
図と同じ関係を文章でも列挙します。表示している文と機械可読な意味データ(RDFa)は同じ要素に載っています。確度が「確立した関係」のものは直接の関係として、「条件付きの関係」のものは成立条件つきの言明(rdf:Statement)として表現しています。
- Reg-Free COM(登録不要COM)はアクティベーション コンテキストを利用します。
- Reg-Free COM(登録不要COM)はアプリケーションマニフェスト(Win32 side-by-side)を利用します。
- Reg-Free COM(登録不要COM)はコンポーネント マニフェスト(assembly manifest)を利用します。
- アプリケーションマニフェスト(Win32 side-by-side)はside-by-side assemblyを前提とします。
- コンポーネント マニフェスト(assembly manifest)はside-by-side assemblyの実装を担います。
- Reg-Free COM(登録不要COM)はbitness一致要件を前提とします。
- Reg-Free COM(登録不要COM)はregsvr32の後継に当たります。
- コンポーネント マニフェスト(assembly manifest)は型ライブラリ(TLB)を利用します。
- Reg-Free COM(登録不要COM)はmt.exe(マニフェスト ツール)で構成できます。
- Reg-Free COM(登録不要COM)はsxstraceで確認できます。
- コンポーネント マニフェスト(assembly manifest)はmt.exe(マニフェスト ツール)で構成できます。
- Reg-Free COM(登録不要COM)はprivate assemblyの探索順序を前提とします。
- .NET(Core以降)はCOM host(*.comhost.dll)を利用します。
- COM host(*.comhost.dll)はEnableComHostingを前提とします。
- COM host(*.comhost.dll)はEnableRegFreeComで構成できます。
- EnableRegFreeComはReg-Free COM(登録不要COM)の実装を担います。
- Visual Basic 6.0(VB6)は型ライブラリ(TLB)を利用します。
- コンポーネント マニフェスト(assembly manifest)はCLSID(Class ID)を利用します。
- コンポーネント マニフェスト(assembly manifest)はProgID(Programmatic Identifier)を利用します。
- Reg-Free COM(登録不要COM)はCOM(コンポーネントオブジェクトモデル)を利用します。
- Reg-Free COM(登録不要COM)はActiveXを利用します。
- Reg-Free COM(登録不要COM)はOCXを利用します。
- Reg-Free COM(登録不要COM)はVisual Basic 6.0(VB6)に対する本記事の推奨です。
- Reg-Free COM(登録不要COM)はMFC(Microsoft Foundation Classes)に対する本記事の推奨です。
- Reg-Free COM(登録不要COM)はWindows Formsに対する本記事の推奨です。
- Reg-Free COM(登録不要COM)をCOMのマシン全体共有に用いることは推奨されません。
主要概念の定義
機械可読データ
このページはサイトの知識グラフ(_data/knowledge/)から自動生成されています。誤りの指摘はお問い合わせからお願いします。