@prefix schema: <https://schema.org/> .
@prefix skos: <http://www.w3.org/2004/02/skos/core#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix ks: <https://comcomponent.com/vocab/> .

<https://comcomponent.com/blog/2026/04/15/001-com-ocx-activex-pitfalls-visual-studio-bitness-admin-rights/#article>
    schema:about <https://comcomponent.com/knowledge/com-registration-pitfalls/>, <https://comcomponent.com/knowledge/visual-studio-2022/>, <https://comcomponent.com/knowledge/wow64-registry-redirector/> ;
    schema:mentions <https://comcomponent.com/knowledge/com/>, <https://comcomponent.com/knowledge/activex/>, <https://comcomponent.com/knowledge/ocx/>, <https://comcomponent.com/knowledge/clsid/>, <https://comcomponent.com/knowledge/progid/>, <https://comcomponent.com/knowledge/type-library/>, <https://comcomponent.com/knowledge/com-localserver/>, <https://comcomponent.com/knowledge/bitness-match-requirement/>, <https://comcomponent.com/knowledge/aximp/>, <https://comcomponent.com/knowledge/axhost/>, <https://comcomponent.com/knowledge/reg-free-com/>, <https://comcomponent.com/knowledge/com-apartment-model/>, <https://comcomponent.com/knowledge/regsvr32/>, <https://comcomponent.com/knowledge/regasm/>, <https://comcomponent.com/knowledge/dotnet-comhost/>, <https://comcomponent.com/knowledge/class-not-registered-error/>, <https://comcomponent.com/knowledge/hkcr/>, <https://comcomponent.com/knowledge/hkcu-classes/>, <https://comcomponent.com/knowledge/hklm-classes/>, <https://comcomponent.com/knowledge/per-user-registration/>, <https://comcomponent.com/knowledge/per-machine-registration/>, <https://comcomponent.com/knowledge/file-system-redirector/>, <https://comcomponent.com/knowledge/activex-license/>, <https://comcomponent.com/knowledge/message-loop/>, <https://comcomponent.com/knowledge/coinitializeex/>, <https://comcomponent.com/knowledge/com-marshaling/>, <https://comcomponent.com/knowledge/sta-blocking-deadlock/>, <https://comcomponent.com/knowledge/assembly-manifest/>, <https://comcomponent.com/knowledge/wow6432node/>, <https://comcomponent.com/knowledge/in-proc-com/>, <https://comcomponent.com/knowledge/admin-rights/>, <https://comcomponent.com/knowledge/dotnet-framework/>, <https://comcomponent.com/knowledge/dotnet/> .

<https://comcomponent.com/knowledge/com-registration-pitfalls/> a skos:Concept ;
    skos:prefLabel "COM/OCX/ActiveXの登録トラブル"@ja ;
    skos:definition "bitness・登録先・ホスト・権限の不一致によって起きる、COMやOCX/ActiveXの典型的な登録トラブル群。"@ja ;
    ks:uses <https://comcomponent.com/knowledge/wow64-registry-redirector/> ;
    ks:uses <https://comcomponent.com/knowledge/visual-studio-2022/> .

<https://comcomponent.com/knowledge/visual-studio-2022/> a skos:Concept ;
    skos:prefLabel "Visual Studio 2022"@ja ;
    skos:definition "devenv.exeが64bit onlyになったバージョンのVisual Studio。"@ja ;
    skos:altLabel "devenv.exe" .

<https://comcomponent.com/knowledge/wow64-registry-redirector/> a skos:Concept ;
    skos:prefLabel "WOW64レジストリリダイレクター"@ja ;
    skos:definition "64bit Windows上で32bitアプリと64bitアプリに別々のレジストリviewを見せる仕組み。HKLM\\SOFTWARE\\Classes直下は共有される一方、CLSIDサブキー配下は32bit側と64bit側で別になる。"@ja ;
    skos:altLabel "レジストリリダイレクタ"@ja .

<https://comcomponent.com/knowledge/activex/> a skos:Concept ;
    skos:prefLabel "ActiveX"@ja ;
    skos:definition "実務ではCOMベースのコントロールやその周辺資産をまとめて指す言葉として使われる技術群。特に.ocx形式のUIコントロールやIE/コンテナへ埋め込む部品を含むことが多い。"@ja ;
    skos:altLabel "ActiveXコントロール"@ja ;
    skos:broader <https://comcomponent.com/knowledge/com/> .

<https://comcomponent.com/knowledge/ocx/> a skos:Concept ;
    skos:prefLabel "OCX"@ja ;
    skos:definition "ActiveXコントロールの実体を持つ.ocx形式のファイル。in-procの形態でホストプロセスに読み込まれる。"@ja ;
    skos:altLabel ".ocxファイル"@ja ;
    skos:altLabel "OLEカスタムコントロール"@ja ;
    skos:broader <https://comcomponent.com/knowledge/activex/> ;
    ks:requires <https://comcomponent.com/knowledge/bitness-match-requirement/> ;
    ks:implements <https://comcomponent.com/knowledge/activex/> .

<https://comcomponent.com/knowledge/bitness-match-requirement/> a skos:Concept ;
    skos:prefLabel "bitness一致要件"@ja ;
    skos:definition "ネイティブモジュール(in-procのCOMコンポーネント、P/Invokeで呼ぶDLL、ベンダー提供SDKのDLLなど)を読み込むホストプロセスと、そのモジュールのビット構成(32bit/64bit)が一致していなければならないという制約。"@ja ;
    skos:altLabel "32bit/64bitの一致"@ja ;
    skos:altLabel "bitness match" .

<https://comcomponent.com/knowledge/com/> a skos:Concept ;
    skos:prefLabel "COM(コンポーネントオブジェクトモデル)"@ja ;
    skos:definition "公開インターフェース、レジストリ登録、Apartment Modelなどを土台にした、Windowsのバイナリ互換コンポーネントモデル。"@ja ;
    skos:altLabel "Component Object Model" ;
    ks:uses <https://comcomponent.com/knowledge/hkcu-classes/> .

<https://comcomponent.com/knowledge/hkcu-classes/> a skos:Concept ;
    skos:prefLabel "HKEY_CURRENT_USER\\Software\\Classes"@ja ;
    skos:definition "COMがコンピューター全体の情報を見る前に先に参照する、そのユーザーだけに見えるCOMクラス登録の場所。"@ja ;
    skos:altLabel "HKCU\\Software\\Classes" .

<https://comcomponent.com/knowledge/clsid/> a skos:Concept ;
    skos:prefLabel "CLSID(Class ID)"@ja ;
    skos:definition "COMコンポーネントの実装(クラス)を一意に指すGUID。レジストリ上の登録の鍵になる識別子。"@ja ;
    skos:altLabel "Class ID" ;
    skos:broader <https://comcomponent.com/knowledge/com/> ;
    ks:storedIn <https://comcomponent.com/knowledge/hkcr/> .

<https://comcomponent.com/knowledge/wow6432node/> a skos:Concept ;
    skos:prefLabel "WOW6432Node"@ja ;
    skos:definition "64bit Windows上で32bitアプリ向けのレジストリ内容が物理的に置かれる場所。"@ja .

<https://comcomponent.com/knowledge/regsvr32/> a skos:Concept ;
    skos:prefLabel "regsvr32"@ja ;
    skos:definition "DLLやOCXなどのCOMコンポーネントをレジストリへ登録・登録解除するコマンドラインツール。"@ja ;
    skos:altLabel "regsvr32.exe" ;
    ks:uses <https://comcomponent.com/knowledge/in-proc-com/> ;
    ks:notRecommendedFor <https://comcomponent.com/knowledge/dotnet-framework/> ;
    ks:uses <https://comcomponent.com/knowledge/file-system-redirector/> ;
    ks:uses <https://comcomponent.com/knowledge/dotnet-comhost/> .

<https://comcomponent.com/knowledge/in-proc-com/> a skos:Concept ;
    skos:prefLabel "In-proc COM(DLLサーバー)"@ja ;
    skos:definition "COMコンポーネントを呼び出し側と同じプロセスに読み込んで使う形態。"@ja ;
    skos:altLabel "DLLサーバー"@ja .

<https://comcomponent.com/knowledge/regasm/> a skos:Concept ;
    skos:prefLabel "Regasm.exe"@ja ;
    skos:definition ".NET FrameworkのアセンブリをCOMへ登録するための登録ツール。"@ja ;
    skos:altLabel "RegAsm" ;
    ks:recommendedFor <https://comcomponent.com/knowledge/dotnet-framework/> .

<https://comcomponent.com/knowledge/dotnet-framework/> a skos:Concept ;
    skos:prefLabel ".NET Framework"@ja ;
    skos:definition "Windowsのコンポーネントとして扱われ、インストールされているOSのライフサイクルに沿ってサポートされるランタイム。System.Messagingの対象範囲。"@ja .

<https://comcomponent.com/knowledge/dotnet-comhost/> a skos:Concept ;
    skos:prefLabel ".NET(5以降)のEnableComHosting/.comhost.dll"@ja ;
    skos:definition ".NET 5以降でCOM公開を行うための仕組み。ビルド時に.comhost.dllを生成しregsvr32で登録する(既定でin-procのみ)。"@ja ;
    skos:altLabel "comhost.dll" ;
    skos:altLabel "EnableComHosting" ;
    ks:recommendedFor <https://comcomponent.com/knowledge/dotnet/> .

<https://comcomponent.com/knowledge/dotnet/> a skos:Concept ;
    skos:prefLabel ".NET(Core以降)"@ja ;
    skos:definition ".NET Frameworkの後継となる、クロスプラットフォーム対応の.NETランタイム(.NET 5以降)。"@ja ;
    skos:altLabel ".NET Core" ;
    skos:altLabel "モダンな.NET"@ja .

<https://comcomponent.com/knowledge/file-system-redirector/> a skos:Concept ;
    skos:prefLabel "WOW64ファイルシステムリダイレクター"@ja ;
    skos:definition "x64 Windows上で、64bitアプリ用の%windir%\\System32と32bitアプリ向けの別の場所(SysWOW64)を振り分ける仕組み。"@ja ;
    skos:altLabel "File System Redirector" .

<https://comcomponent.com/knowledge/admin-rights/> a skos:Concept ;
    skos:prefLabel "管理者権限"@ja ;
    skos:definition "コンピューター全体の設定を変更できる権限。"@ja ;
    skos:altLabel "昇格"@ja .

<https://comcomponent.com/knowledge/class-not-registered-error/> a skos:Concept ;
    skos:prefLabel "0x80040154(Class not registered)"@ja ;
    skos:definition "公式にはREGDB_E_CLASSNOTREGと呼ばれるCOMのエラーで、完全な未登録だけでなく、別ビット数側のレジストリviewにだけ登録されている場合や、そのユーザーにしか見えないHKCU側にだけ登録されている場合にも起きる。"@ja ;
    skos:altLabel "REGDB_E_CLASSNOTREG" .

<https://comcomponent.com/knowledge/per-user-registration/> a skos:Concept ;
    skos:prefLabel "per-user登録"@ja ;
    skos:definition "そのユーザーのアカウントだけで有効な、開発機での手動登録などに使われるCOM登録のスコープ。"@ja ;
    skos:altLabel "ユーザー単位の登録"@ja .

<https://comcomponent.com/knowledge/hkcr/> a skos:Concept ;
    skos:prefLabel "HKEY_CLASSES_ROOT(HKCR)"@ja ;
    skos:definition "HKLM\\Software\\ClassesとHKCU\\Software\\Classesのmerged view。"@ja ;
    skos:altLabel "HKCR" ;
    ks:inherits <https://comcomponent.com/knowledge/hklm-classes/> ;
    ks:inherits <https://comcomponent.com/knowledge/hkcu-classes/> .

<https://comcomponent.com/knowledge/hklm-classes/> a skos:Concept ;
    skos:prefLabel "HKEY_LOCAL_MACHINE\\Software\\Classes"@ja ;
    skos:definition "そのマシンの全ユーザーに見える、コンピューター全体のCOMクラス登録の場所。"@ja ;
    skos:altLabel "HKLM\\Software\\Classes" ;
    ks:uses <https://comcomponent.com/knowledge/wow64-registry-redirector/> .

<https://comcomponent.com/knowledge/per-machine-registration/> a skos:Concept ;
    skos:prefLabel "per-machine登録"@ja ;
    skos:definition "そのマシンの全ユーザーで有効な、インストーラーで行うべきCOM登録のスコープ。"@ja ;
    skos:altLabel "マシン単位の登録"@ja ;
    ks:requires <https://comcomponent.com/knowledge/admin-rights/> .

<https://comcomponent.com/knowledge/activex-license/> a skos:Concept ;
    skos:prefLabel "ActiveXのデザイン時/実行時ライセンス"@ja ;
    skos:definition "古いActiveXコントロールで、フォームへの貼り付け(デザイン時)と実行時とで別々に必要になることがあるライセンスの仕組み。"@ja ;
    skos:altLabel "design-time license" ;
    skos:altLabel "run-time license" ;
    skos:altLabel ".LIC" .

<https://comcomponent.com/knowledge/aximp/> a skos:Concept ;
    skos:prefLabel "AxImp(ActiveX Control Importer)"@ja ;
    skos:definition ".NET Framework付属のツールで、OCXからCOM型のランタイム呼び出し可能ラッパーと、AxHost派生のWindows Forms用ラッパーアセンブリを生成する。生成ファイル名はProgIDから決まる。"@ja ;
    skos:altLabel "Aximp.exe" ;
    skos:altLabel "ActiveX Control Importer" ;
    ks:requires <https://comcomponent.com/knowledge/type-library/> ;
    ks:uses <https://comcomponent.com/knowledge/axhost/> .

<https://comcomponent.com/knowledge/type-library/> a skos:Concept ;
    skos:prefLabel "型ライブラリ(TLB)"@ja ;
    skos:definition "インターフェース、メソッド、引数の型といった型情報をバイナリで持つファイル。VB6や.NETから型付きでCOMを呼び出す際の情報源になる。"@ja ;
    skos:altLabel "Type Library" ;
    skos:altLabel "TLB" ;
    skos:broader <https://comcomponent.com/knowledge/com/> .

<https://comcomponent.com/knowledge/axhost/> a skos:Concept ;
    skos:prefLabel "AxHost"@ja ;
    skos:definition "Windows Forms上でActiveXコントロールをホストするための基底クラス。"@ja ;
    skos:altLabel "AxHost Class" ;
    ks:implements <https://comcomponent.com/knowledge/activex/> .

<https://comcomponent.com/knowledge/com-apartment-model/> a skos:Concept ;
    skos:prefLabel "COMアパートメントモデル(STA/MTA)"@ja ;
    skos:definition "どのスレッドからCOMコンポーネントを呼んでよいかを決める、COMのスレッドモデルの約束。"@ja ;
    skos:altLabel "STA" ;
    skos:altLabel "MTA" ;
    skos:altLabel "Single/Multi Threaded Apartment" ;
    skos:broader <https://comcomponent.com/knowledge/com/> ;
    ks:requires <https://comcomponent.com/knowledge/coinitializeex/> ;
    ks:requires <https://comcomponent.com/knowledge/com-marshaling/> .

<https://comcomponent.com/knowledge/message-loop/> a skos:Concept ;
    skos:prefLabel "メッセージループ"@ja ;
    skos:definition "スレッドがGetMessage/DispatchMessageなどで自分のウィンドウ宛てのメッセージを順に取り出し処理し続ける仕組み。入力・描画・イベント処理を担うと同時に、STAが持つOleMainThreadWndClassという隠しウィンドウ宛てに届く、別アパートメントからの呼び出しメッセージもここでディスパッチされる。"@ja ;
    skos:altLabel "OleMainThreadWndClass" ;
    skos:broader <https://comcomponent.com/knowledge/com-apartment-model/> ;
    ks:prevents <https://comcomponent.com/knowledge/sta-blocking-deadlock/> .

<https://comcomponent.com/knowledge/coinitializeex/> a skos:Concept ;
    skos:prefLabel "CoInitializeEx"@ja ;
    skos:definition "COMを使う各スレッドが個別に呼んで初期化する必要があるWin32 API。"@ja .

<https://comcomponent.com/knowledge/sta-blocking-deadlock/> a skos:Concept ;
    skos:prefLabel "STAスレッドのブロックによるデッドロック"@ja ;
    skos:definition "UIスレッドでTask.Wait()やWaitOneなどの同期待ちを行うと、メッセージの取り出しが止まりCOMのコールバックとアパートメント間の呼び出しが配達されなくなり、デッドロックになる状態。"@ja .

<https://comcomponent.com/knowledge/com-marshaling/> a skos:Concept ;
    skos:prefLabel "マーシャリング"@ja ;
    skos:definition "プロセス境界だけでなく、同一プロセス内のCOMアパートメント境界やマネージド/ネイティブ境界のような呼び出し境界を越えて、引数や戻り値をやり取りできる形に詰め直すこと。"@ja ;
    skos:altLabel "marshaling" ;
    skos:altLabel "Marshaling" ;
    skos:altLabel "Marshalling" .

<https://comcomponent.com/knowledge/reg-free-com/> a skos:Concept ;
    skos:prefLabel "Reg-Free COM(登録不要COM)"@ja ;
    skos:definition "レジストリ登録なしに、アプリ側のマニフェストに書いたCLSIDやProgIDなどの情報でCOMコンポーネントを解決する仕組み。"@ja ;
    skos:altLabel "Registration-Free COM" ;
    skos:altLabel "side-by-side" ;
    skos:broader <https://comcomponent.com/knowledge/com/> ;
    ks:uses <https://comcomponent.com/knowledge/assembly-manifest/> ;
    ks:mitigates <https://comcomponent.com/knowledge/com-registration-pitfalls/> .

<https://comcomponent.com/knowledge/assembly-manifest/> a skos:Concept ;
    skos:prefLabel "アセンブリマニフェスト"@ja ;
    skos:definition "どのファイルがどのCLSIDを提供するかをcomClass要素で宣言する、Reg-Free COMで使うマニフェストファイル。依存側のassemblyIdentityはコンポーネント側と完全に一致していなければならない。"@ja ;
    skos:altLabel "comClass" .

<https://comcomponent.com/knowledge/com-localserver/> a skos:Concept ;
    skos:prefLabel "COM LocalServer(別プロセスCOMサーバー)"@ja ;
    skos:definition "COMサーバーをEXEとして別プロセスで動かす形態。bitnessの壁を越えたり、クラッシュを隔離したりできる。レジストリのCLSID配下のLocalServer32キーにEXEパスを登録する。"@ja ;
    skos:altLabel "LocalServer32" ;
    skos:altLabel "out-of-proc COMサーバー"@ja ;
    skos:broader <https://comcomponent.com/knowledge/com/> ;
    ks:requires <https://comcomponent.com/knowledge/clsid/> .

<https://comcomponent.com/knowledge/progid/> a skos:Concept ;
    skos:prefLabel "ProgID(Programmatic Identifier)"@ja ;
    skos:definition "CLSIDに付けた、人が読める文字列の名前。`Excel.Application`のような形でCLSIDに対応付けられる。"@ja ;
    skos:altLabel "Programmatic Identifier" ;
    skos:broader <https://comcomponent.com/knowledge/com/> ;
    ks:requires <https://comcomponent.com/knowledge/clsid/> .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/com-registration-pitfalls/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/wow64-registry-redirector/> ;
    schema:description "COM/ActiveXの登録トラブルの多くは、CLSIDサブキーが32bit viewと64bit viewで別になるWOW64レジストリリダイレクターの理解不足から生じる。"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/windows/win32/winprog64/registry-redirector> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/com-registration-pitfalls/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/visual-studio-2022/> ;
    schema:description "Visual Studio 2022がdevenv.exeとして64bitプロセスになったことで、32bit前提のデザイン時連携が壊れる問題が表面化しやすくなった。"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/visualstudio/releases/2022/release-notes-v17.0> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/visual-studio-2022/> ;
    rdf:predicate ks:incompatibleWith ;
    rdf:object <https://comcomponent.com/knowledge/activex/> ;
    schema:description "Visual Studio 2022は64bitプロセスのため、x86固定のCOM/ActiveXコンポーネントをデザイン時に直接ロードできない。AnyCPUにしても、依存先が32bit固定のActiveXなら問題は残る。"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/dotnet/desktop/winforms/visualstudio/troubleshoot-32bit> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/ocx/> ;
    rdf:predicate ks:requires ;
    rdf:object <https://comcomponent.com/knowledge/bitness-match-requirement/> ;
    schema:description "in-procのOCXは読み込むホストプロセスとビット構成(32bit/64bit)を揃える必要があり、64bitアプリから32bit OCXを直接呼ぶことはできない。"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/windows/win32/com/32-bit-and-64-bit-interoperability> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/ocx/> ;
    rdf:predicate ks:implements ;
    rdf:object <https://comcomponent.com/knowledge/activex/> ;
    schema:description "OCXはActiveXコントロールの実体を持つ.ocx形式のファイルである。"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/windows/win32/com/activex-controls> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/com/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/hkcu-classes/> ;
    schema:description "COMはHKEY_CURRENT_USER\\Software\\Classesを先に見てから、コンピューター全体の情報を扱う。"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/windows/win32/com/classes-and-servers> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/clsid/> ;
    rdf:predicate ks:storedIn ;
    rdf:object <https://comcomponent.com/knowledge/wow6432node/> ;
    schema:description "64bit Windows上で32bitのCOMクラスを登録した場合、CLSIDの配下はWOW64のリダイレクト対象となり、物理的な置き場所はWow6432Nodeになる。64bit登録はネイティブビューに置かれ、32bit WindowsにはWow6432Nodeの分岐自体がない"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/windows/win32/winprog64/shared-registry-keys> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/regsvr32/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/in-proc-com/> ;
    schema:description "regsvr32はDllRegisterServer/DllUnregisterServerをエクスポートするネイティブのin-proc COMサーバー(DLL/OCX)向けの登録コマンドである。"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/windows-server/administration/windows-commands/regsvr32> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/regasm/> ;
    rdf:predicate ks:recommendedFor ;
    rdf:object <https://comcomponent.com/knowledge/dotnet-framework/> ;
    schema:description "COMで使用する.NET Frameworkアセンブリの登録にはRegasm.exeを使う。"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/dotnet/framework/tools/regasm-exe-assembly-registration-tool> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/regsvr32/> ;
    rdf:predicate ks:notRecommendedFor ;
    rdf:object <https://comcomponent.com/knowledge/dotnet-framework/> ;
    schema:description "regsvr32は何でも登録できる汎用コマンドではなく、.NET Frameworkアセンブリの登録には向かない。"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/dotnet/framework/tools/regasm-exe-assembly-registration-tool> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/dotnet-comhost/> ;
    rdf:predicate ks:recommendedFor ;
    rdf:object <https://comcomponent.com/knowledge/dotnet/> ;
    schema:description ".NET 5+/6+/8+のCOM公開ではEnableComHostingを設定してビルドし、生成された.comhost.dllをregsvr32で登録する。"@ja ;
    ks:evidence <https://learn.microsoft.com/ja-jp/dotnet/core/native-interop/expose-components-to-com> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/regsvr32/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/file-system-redirector/> ;
    schema:description "x64 WindowsではSystem32用とSysWOW64用のregsvr32を使い分ける必要があり、これはWOW64のファイルシステムリダイレクターによる32bit側の別配置に対応する。"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/windows/win32/winprog64/file-system-redirector> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/regsvr32/> ;
    rdf:predicate ks:requires ;
    rdf:object <https://comcomponent.com/knowledge/admin-rights/> ;
    schema:description "標準ユーザーでregsvr32を実行するとレジストリやSystem32へ書き込めず0x80070005になることがある。"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/troubleshoot/windows-client/shell-experience/dllregisterserver-error> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/wow64-registry-redirector/> ;
    rdf:predicate ks:mayCause ;
    rdf:object <https://comcomponent.com/knowledge/class-not-registered-error/> ;
    schema:description "対象が別のレジストリviewにだけ登録されている場合、正しいCLSIDが見えず0x80040154(Class not registered)になり得る。"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/windows/win32/winprog64/registry-redirector> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/per-user-registration/> ;
    rdf:predicate ks:mayCause ;
    rdf:object <https://comcomponent.com/knowledge/class-not-registered-error/> ;
    schema:description "そのユーザーにしか見えないHKCU側にだけ登録されている場合も、他のユーザーやサービスアカウントからは0x80040154になり得る。"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/windows/win32/sysinfo/merged-view-of-hkey-classes-root> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/hkcr/> ;
    rdf:predicate ks:inherits ;
    rdf:object <https://comcomponent.com/knowledge/hklm-classes/> ;
    schema:description "HKEY_CLASSES_ROOTは、HKLM\\Software\\Classesの内容を継承して見せるmerged viewの一方の入力である。"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/windows/win32/sysinfo/merged-view-of-hkey-classes-root> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/hkcr/> ;
    rdf:predicate ks:inherits ;
    rdf:object <https://comcomponent.com/knowledge/hkcu-classes/> ;
    schema:description "HKEY_CLASSES_ROOTは、HKCU\\Software\\Classesの内容を継承して見せるmerged viewのもう一方の入力である。"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/windows/win32/sysinfo/merged-view-of-hkey-classes-root> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/per-machine-registration/> ;
    rdf:predicate ks:requires ;
    rdf:object <https://comcomponent.com/knowledge/admin-rights/> ;
    schema:description "管理者権限を必要とするアプリケーションは、依存COMオブジェクトをインストール時にper-machineのCOM構成ストアへ登録するべきとされる。"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/windows/win32/sysinfo/hkey-classes-root-key> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/activex/> ;
    rdf:predicate ks:requires ;
    rdf:object <https://comcomponent.com/knowledge/activex-license/> ;
    schema:description "古いActiveXコントロールではデザイン時ライセンスと実行時ライセンスが分かれていることがあり、開発機にライセンスファイルがないとフォームに貼れないことがある。"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/cpp/mfc/mfc-activex-controls-licensing-an-activex-control> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/aximp/> ;
    rdf:predicate ks:requires ;
    rdf:object <https://comcomponent.com/knowledge/type-library/> ;
    schema:description "AximpはOCXが持つ型情報(型ライブラリ)をもとに、型付きのラッパーアセンブリを生成する。"@ja ;
    ks:evidence <https://learn.microsoft.com/ja-jp/dotnet/framework/tools/aximp-exe-windows-forms-activex-control-importer> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/aximp/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/axhost/> ;
    schema:description "Aximpが生成するWindows Forms用ラッパーは、AxHostから派生したクラスとして作られる。"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/dotnet/api/system.windows.forms.axhost> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/axhost/> ;
    rdf:predicate ks:implements ;
    rdf:object <https://comcomponent.com/knowledge/activex/> ;
    schema:description "AxHostはWindows Forms上でActiveXコントロールをホストするための基底クラスの実装を担う。"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/dotnet/api/system.windows.forms.axhost> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/com-apartment-model/> ;
    rdf:predicate ks:requires ;
    rdf:object <https://comcomponent.com/knowledge/message-loop/> ;
    schema:description "STA(single-threaded apartment)ではメッセージループが必要で、これは作法ではなく、隠しウィンドウ宛てのメッセージとして呼び出しを配達する仕組みそのものである。"@ja ;
    ks:evidence <https://learn.microsoft.com/ja-jp/windows/win32/com/single-threaded-apartments> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/com-apartment-model/> ;
    rdf:predicate ks:requires ;
    rdf:object <https://comcomponent.com/knowledge/coinitializeex/> ;
    schema:description "COMを使う各スレッドはCoInitializeExで個別に初期化する必要がある。"@ja ;
    ks:evidence <https://learn.microsoft.com/ja-jp/windows/win32/learnwin32/initializing-the-com-library> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/message-loop/> ;
    rdf:predicate ks:prevents ;
    rdf:object <https://comcomponent.com/knowledge/sta-blocking-deadlock/> ;
    schema:description "メッセージループが動き続けることで別アパートメントからの呼び出しメッセージが取り出され続け、UIスレッドをブロックして取り出しを止めることによるデッドロックを避けられる。"@ja ;
    ks:evidence <https://learn.microsoft.com/ja-jp/windows/win32/com/single-threaded-apartments> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/com-apartment-model/> ;
    rdf:predicate ks:requires ;
    rdf:object <https://comcomponent.com/knowledge/com-marshaling/> ;
    schema:description "STAのオブジェクトのインターフェイスポインターを別スレッドへそのままコピーしてはならず、アパートメントをまたぐにはマーシャリングする必要がある。"@ja ;
    ks:evidence <https://learn.microsoft.com/ja-jp/windows/win32/com/single-threaded-apartments> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/reg-free-com/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/assembly-manifest/> ;
    schema:description "Reg-Free COMは、レジストリの代わりにアセンブリマニフェストへCLSIDと実体ファイルの対応を書くことでアクティブ化情報を持たせる。"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/windows/win32/sbscs/assembly-manifests> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/reg-free-com/> ;
    rdf:predicate ks:mitigates ;
    rdf:object <https://comcomponent.com/knowledge/com-registration-pitfalls/> ;
    schema:description "activation contextにアクティブ化情報を持たせることで、レジストリ登録に伴う環境差の事故を減らせる。"@ja ;
    ks:evidence <https://learn.microsoft.com/ja-jp/windows/win32/sbscs/creating-registration-free-com-objects> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/com-localserver/> ;
    rdf:predicate ks:requires ;
    rdf:object <https://comcomponent.com/knowledge/clsid/> ;
    schema:description "LocalServer32はCLSIDサブキーの配下にあり、out-of-procサーバーのEXEパスを保持する。"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/windows/win32/com/classes-and-servers> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/progid/> ;
    rdf:predicate ks:requires ;
    rdf:object <https://comcomponent.com/knowledge/clsid/> ;
    schema:description "ProgIDから実際のCLSIDを引く対応が登録されていて初めて、ProgID経由でサーバーを見つけられる。"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/windows/win32/winprog64/shared-registry-keys> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/hklm-classes/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/wow64-registry-redirector/> ;
    schema:description "HKLM\\SOFTWARE\\Classes\\CLSID配下はWOW64のリダイレクト対象で、32bit側の物理的な置き場所はClassesの下のWow6432Nodeになる。"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/windows/win32/winprog64/shared-registry-keys> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/clsid/> ;
    rdf:predicate ks:storedIn ;
    rdf:object <https://comcomponent.com/knowledge/hkcr/> ;
    schema:description "CLSIDはHKEY_CLASSES_ROOT\\CLSID\\{CLSID}のようにレジストリのCLSIDキー配下に登録され、そのマージ元はHKLMとHKCUのClasses配下である。"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/windows/win32/winprog64/shared-registry-keys> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/activex/> ;
    rdf:predicate ks:requires ;
    rdf:object <https://comcomponent.com/knowledge/com-apartment-model/> ;
    schema:description "特にUI系のOCX/ActiveXはSTA前提であることが多く、STAスレッドをブロックするとコールバックの配達が止まって固まる。"@ja ;
    ks:evidence <https://learn.microsoft.com/ja-jp/windows/win32/com/single-threaded-apartments> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/regsvr32/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/dotnet-comhost/> ;
    schema:description ".NET 5+/6+/8+のCOM公開で生成された.comhost.dllも、規約通りregsvr32で登録する。"@ja ;
    ks:evidence <https://learn.microsoft.com/ja-jp/dotnet/core/native-interop/expose-components-to-com> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .
