@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/windows-appcompat-shims-compatibility-mode/#article>
    schema:about <https://comcomponent.com/knowledge/appcompat-shim/>, <https://comcomponent.com/knowledge/compatibility-layer/> ;
    schema:mentions <https://comcomponent.com/knowledge/import-address-table/>, <https://comcomponent.com/knowledge/shim-database/>, <https://comcomponent.com/knowledge/appcompatflags-layers/>, <https://comcomponent.com/knowledge/program-compatibility-assistant/>, <https://comcomponent.com/knowledge/os-version-spoofing/>, <https://comcomponent.com/knowledge/supportedos-manifest/>, <https://comcomponent.com/knowledge/runasinvoker/>, <https://comcomponent.com/knowledge/compatibility-administrator/>, <https://comcomponent.com/knowledge/sdbinst/>, <https://comcomponent.com/knowledge/registry-virtualization/>, <https://comcomponent.com/knowledge/wow64/>, <https://comcomponent.com/knowledge/dpi-virtualization/>, <https://comcomponent.com/knowledge/admin-rights/>, <https://comcomponent.com/knowledge/windows-sandbox/>, <https://comcomponent.com/knowledge/win16-application/>, <https://comcomponent.com/knowledge/admin-access-spoofing/>, <https://comcomponent.com/knowledge/uac-elevation/> .

<https://comcomponent.com/knowledge/appcompat-shim/> a skos:Concept ;
    skos:prefLabel "互換修正(シム)"@ja ;
    skos:definition "アプリとWindows APIの間に割り込み、古いWindowsと同じ答えを返すユーザーモードの小さなコード。"@ja ;
    skos:altLabel "シム"@ja ;
    skos:altLabel "Shim" ;
    skos:altLabel "Compatibility Fix" ;
    ks:uses <https://comcomponent.com/knowledge/import-address-table/> ;
    ks:implements <https://comcomponent.com/knowledge/admin-access-spoofing/> ;
    ks:configuredBy <https://comcomponent.com/knowledge/shim-database/> ;
    ks:implements <https://comcomponent.com/knowledge/os-version-spoofing/> .

<https://comcomponent.com/knowledge/compatibility-layer/> a skos:Concept ;
    skos:prefLabel "互換レイヤー(互換モード)"@ja ;
    skos:definition "複数のシムとフラグを束ねたもの。互換性タブから選べる「Windows XP (Service Pack 3)」などがこれにあたる。"@ja ;
    ks:uses <https://comcomponent.com/knowledge/appcompat-shim/> ;
    ks:storedIn <https://comcomponent.com/knowledge/appcompatflags-layers/> .

<https://comcomponent.com/knowledge/import-address-table/> a skos:Concept ;
    skos:prefLabel "インポートアドレステーブル(IAT)"@ja ;
    skos:definition "PEフォーマットの実行ファイルが外部DLLのAPIを呼び出すために持つアドレス表。"@ja ;
    skos:altLabel "IAT" .

<https://comcomponent.com/knowledge/admin-access-spoofing/> a skos:Concept ;
    skos:prefLabel "管理者権限チェックの偽装"@ja ;
    skos:definition "アプリが行う管理者権限の有無の確認に対して成功を装い、実際の権限を与えないまま処理を先へ進めさせる互換性修正の手法。"@ja .

<https://comcomponent.com/knowledge/appcompatflags-layers/> a skos:Concept ;
    skos:prefLabel "AppCompatFlags\\Layersキー"@ja ;
    skos:definition "互換モードや昇格指定などのアプリケーション互換設定が保存されるレジストリキー。"@ja .

<https://comcomponent.com/knowledge/shim-database/> a skos:Concept ;
    skos:prefLabel "シムデータベース(.sdb)"@ja ;
    skos:definition "どの実行ファイルにどの解決策を当てるかを、ファイル名・サイズ・チェックサム・バージョンなどのマッチング属性つきで管理するバイナリのデータベース。"@ja ;
    ks:requires <https://comcomponent.com/knowledge/compatibility-administrator/> .

<https://comcomponent.com/knowledge/compatibility-administrator/> a skos:Concept ;
    skos:prefLabel "Compatibility Administrator"@ja ;
    skos:definition "互換修正・互換モード・AppHelpメッセージの適用とカスタムデータベースの作成を行うツール。Windows ADKに含まれる。"@ja .

<https://comcomponent.com/knowledge/sdbinst/> a skos:Concept ;
    skos:prefLabel "カスタム互換データベースの配布"@ja ;
    skos:definition "作成した.sdbを端末へインストールして有効にする配布手順と、その集中管理戦略。"@ja ;
    ks:requires <https://comcomponent.com/knowledge/shim-database/> .

<https://comcomponent.com/knowledge/program-compatibility-assistant/> a skos:Concept ;
    skos:prefLabel "PCA(Program Compatibility Assistant)"@ja ;
    skos:definition "アプリの実行を監視して既知の互換性問題の兆候を検出し、修正の適用を提案または自動適用する仕組み。"@ja ;
    skos:altLabel "PCA" ;
    ks:automates <https://comcomponent.com/knowledge/compatibility-layer/> .

<https://comcomponent.com/knowledge/os-version-spoofing/> a skos:Concept ;
    skos:prefLabel "OSバージョンの詐称"@ja ;
    skos:definition "GetVersionExなどの問い合わせに対して、古いWindowsのバージョン番号を返させること。"@ja .

<https://comcomponent.com/knowledge/supportedos-manifest/> a skos:Concept ;
    skos:prefLabel "マニフェストのsupportedOS宣言"@ja ;
    skos:definition "アプリマニフェストのcompatibilityセクションで、サポートするOSのGUIDを宣言する仕組み。"@ja ;
    ks:prevents <https://comcomponent.com/knowledge/os-version-spoofing/> .

<https://comcomponent.com/knowledge/runasinvoker/> a skos:Concept ;
    skos:prefLabel "RunAsInvoker"@ja ;
    skos:definition "インストーラー検出もマニフェストも上書きして、親プロセスから継承したトークンでアプリを起動させる互換修正。"@ja ;
    ks:implements <https://comcomponent.com/knowledge/appcompat-shim/> ;
    ks:prevents <https://comcomponent.com/knowledge/uac-elevation/> .

<https://comcomponent.com/knowledge/uac-elevation/> a skos:Concept ;
    skos:prefLabel "UAC昇格(管理者として実行)"@ja ;
    skos:definition "UAC有効な管理者ユーザーのログオン時に、権限を制限した通常トークンと完全な管理者トークンという、リンクされた2つのログオンセッションが作られる仕組み。"@ja ;
    skos:altLabel "UAC elevation" ;
    skos:altLabel "リンクされたログオンセッション"@ja .

<https://comcomponent.com/knowledge/registry-virtualization/> a skos:Concept ;
    skos:prefLabel "レジストリ仮想化(VirtualStore)"@ja ;
    skos:definition "HKLM\\Softwareへのグローバルな書き込みを、ユーザー別のVirtualStoreへ透過的にリダイレクトする互換機構。"@ja ;
    ks:mitigates <https://comcomponent.com/knowledge/admin-rights/> .

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

<https://comcomponent.com/knowledge/win16-application/> a skos:Concept ;
    skos:prefLabel "16bitアプリケーション"@ja ;
    skos:definition "Windows 3.x時代のWin16 API向けにビルドされた実行ファイル。64bit版WindowsにはNTVDMが載っておらず実行できない。"@ja ;
    ks:incompatibleWith <https://comcomponent.com/knowledge/wow64/> .

<https://comcomponent.com/knowledge/wow64/> a skos:Concept ;
    skos:prefLabel "WOW64"@ja ;
    skos:definition "64bit Windows上で32bitアプリケーションを動作させる互換環境のこと。"@ja ;
    skos:altLabel "32bit互換環境"@ja .

<https://comcomponent.com/knowledge/dpi-virtualization/> a skos:Concept ;
    skos:prefLabel "DPI仮想化"@ja ;
    skos:definition "DPI対応を宣言していないアプリに対し、OSが「画面は96 DPIだ」と偽って描かせ、その結果をビットマップとして拡大表示する救済措置。レイアウトは崩れない代わりに全体がにじむ。"@ja ;
    skos:altLabel "DPI Virtualization" ;
    skos:altLabel "ビットマップストレッチ"@ja ;
    ks:configuredBy <https://comcomponent.com/knowledge/compatibility-layer/> .

<https://comcomponent.com/knowledge/windows-sandbox/> a skos:Concept ;
    skos:prefLabel "Windows サンドボックス"@ja ;
    skos:definition "使い捨てのクリーンなデスクトップ環境を数分で用意できる、Windows Pro/Enterprise/Education系で使えるホスト同系統の軽量な仮想化検証環境。"@ja ;
    skos:altLabel "Windows Sandbox" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/appcompat-shim/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/import-address-table/> ;
    schema:description "アプリのロード時に対象APIのIATエントリをシムコードのアドレスへ書き換え、アプリとWindowsの間に割り込む。動的にGetProcAddressで取得されるAPIも、GetProcAddress自体をフックすることで対応する。"@ja ;
    ks:evidence <https://learn.microsoft.com/windows/deployment/planning/understanding-and-using-compatibility-fixes> ;
    ks:verifiedAt "2026-08-20" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/appcompat-shim/> ;
    rdf:predicate ks:implements ;
    rdf:object <https://comcomponent.com/knowledge/admin-access-spoofing/> ;
    schema:description "シムはアプリ側のコードとして動くためアプリと同じセキュリティ制約を受け、OSのセキュリティ機構を回避することはできない。ForceAdminAccessのような修正も管理者チェックの成功を偽装してアプリを先へ進めるだけで、実際に保護された資源へのアクセス権を与えるわけではない。"@ja ;
    ks:evidence <https://learn.microsoft.com/windows/deployment/planning/understanding-and-using-compatibility-fixes>, <https://learn.microsoft.com/windows/deployment/planning/compatibility-fixes-for-windows-8-windows-7-and-windows-vista> ;
    ks:verifiedAt "2026-08-22" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/compatibility-layer/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/appcompat-shim/> ;
    schema:description "互換レイヤー(互換モード)は複数のシムとフラグを束ねたもので、互換性タブから選べるのは代表的なレイヤーだけであり、個別のシムを選んで組み合わせることはできない。"@ja ;
    ks:evidence <https://learn.microsoft.com/windows/win32/devnotes/application-compatibility-database> ;
    ks:verifiedAt "2026-08-20" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/compatibility-layer/> ;
    rdf:predicate ks:storedIn ;
    rdf:object <https://comcomponent.com/knowledge/appcompatflags-layers/> ;
    schema:description "互換性タブの設定はAppCompatFlags\\Layersキーに保存される。「管理者としてこのプログラムを実行する」も同じキーに同居するため、互換モードと昇格指定の混乱はここから生まれる。HKCUに書けばそのユーザー、「すべてのユーザーの設定を変更」ならHKLM側に書かれる。"@ja ;
    ks:evidence <https://learn.microsoft.com/windows/win32/direct3ddxgi/d3d10-graphics-programming-guide-dxgi> ;
    ks:verifiedAt "2026-08-20" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/appcompat-shim/> ;
    rdf:predicate ks:configuredBy ;
    rdf:object <https://comcomponent.com/knowledge/shim-database/> ;
    schema:description "データベースには対象アプリの実行ファイルがファイル名・サイズ・チェックサム・バージョンといったマッチング属性で登録され、プロセス起動時に照合される。解決策にはAPIフックを注入するAppfixのほか、メッセージを表示するApphelpもある。"@ja ;
    ks:evidence <https://learn.microsoft.com/windows/win32/devnotes/application-compatibility-database> ;
    ks:verifiedAt "2026-08-22" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/shim-database/> ;
    rdf:predicate ks:requires ;
    rdf:object <https://comcomponent.com/knowledge/compatibility-administrator/> ;
    schema:description "Compatibility Administratorは互換修正・互換モード・AppHelpメッセージの適用とカスタムデータベースの作成を行う。Windows ADKにStandard User Analyzerとともに含まれる。"@ja ;
    ks:evidence <https://learn.microsoft.com/windows/deployment/planning/compatibility-administrator-users-guide>, <https://learn.microsoft.com/windows-hardware/get-started/adk-install>, <https://learn.microsoft.com/windows/deployment/planning/creating-a-custom-compatibility-fix-in-compatibility-administrator> ;
    ks:verifiedAt "2026-08-20" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/sdbinst/> ;
    rdf:predicate ks:requires ;
    rdf:object <https://comcomponent.com/knowledge/shim-database/> ;
    schema:description "作成したカスタム互換データベースは端末へ配布してインストールする必要があり、集中管理の戦略が案内されている。Microsoft提供の互換修正はWindowsの一部として出荷されWindows Updateで更新されるが、カスタムデータベースの面倒を見るのは自組織になる。"@ja ;
    ks:evidence <https://learn.microsoft.com/windows/deployment/planning/compatibility-fix-database-management-strategies-and-deployment>, <https://learn.microsoft.com/windows/deployment/planning/understanding-and-using-compatibility-fixes> ;
    ks:verifiedAt "2026-08-20" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/program-compatibility-assistant/> ;
    rdf:predicate ks:automates ;
    rdf:object <https://comcomponent.com/knowledge/compatibility-layer/> ;
    schema:description "PCAはアプリ実行を監視して既知の互換性問題の兆候を検出し、推奨修正の適用を提案または自動適用する。「設定していないのに互換モードのチェックが入っていた」の正体は多くの場合これで、設計どおりの動作である。"@ja ;
    ks:evidence <https://learn.microsoft.com/windows/win32/w8cookbook/pca-scenarios-for-windows-8> ;
    ks:verifiedAt "2026-08-20" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/appcompat-shim/> ;
    rdf:predicate ks:implements ;
    rdf:object <https://comcomponent.com/knowledge/os-version-spoofing/> ;
    schema:description "割り込んだシムは「今のOSバージョンは?」という問い合わせに古いバージョン番号を返してから、必要に応じて本物のAPIを呼ぶ。"@ja ;
    ks:evidence <https://learn.microsoft.com/windows/deployment/planning/understanding-and-using-compatibility-fixes>, <https://learn.microsoft.com/windows/deployment/planning/compatibility-fixes-for-windows-8-windows-7-and-windows-vista> ;
    ks:verifiedAt "2026-08-20" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/supportedos-manifest/> ;
    rdf:predicate ks:prevents ;
    rdf:object <https://comcomponent.com/knowledge/os-version-spoofing/> ;
    schema:description "Windows 8.1以降、GetVersionExの返す値はマニフェスト依存になり、supportedOS要素で宣言していないOSのバージョンは返らない。「昔のWindowsだと答える」動作は今や既定であり、互換モードはこの仕組みの延長にある。"@ja ;
    ks:evidence <https://learn.microsoft.com/windows/win32/api/sysinfoapi/nf-sysinfoapi-getversionexw>, <https://learn.microsoft.com/windows/win32/sysinfo/targeting-your-application-at-windows-8-1> ;
    ks:verifiedAt "2026-08-20" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/runasinvoker/> ;
    rdf:predicate ks:implements ;
    rdf:object <https://comcomponent.com/knowledge/appcompat-shim/> ;
    schema:description "RunAsInvokerはインストーラー検出もマニフェストも上書きし、親プロセスから継承したトークンでアプリを起動させる。XP時代の惰性で管理者を要求しているだけのアプリを一般権限で動かせる。"@ja ;
    ks:evidence <https://learn.microsoft.com/previous-versions/windows/it-pro/windows-7/dd638389%28v=ws.10%29> ;
    ks:verifiedAt "2026-08-20" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/runasinvoker/> ;
    rdf:predicate ks:prevents ;
    rdf:object <https://comcomponent.com/knowledge/uac-elevation/> ;
    schema:description "昇格要求だけを抑止して一般ユーザー権限のまま起動させるので、実際には管理者権限を使っていないアプリの延命に効く。"@ja ;
    ks:evidence <https://learn.microsoft.com/previous-versions/windows/it-pro/windows-7/dd638389%28v=ws.10%29> ;
    ks:verifiedAt "2026-08-22" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/registry-virtualization/> ;
    rdf:predicate ks:mitigates ;
    rdf:object <https://comcomponent.com/knowledge/admin-rights/> ;
    schema:description "レジストリ仮想化はHKLM\\Softwareへのグローバルな書き込みをユーザー別のVirtualStoreへ透過的にリダイレクトするため、管理者権限がなくても書き込みが成功したように見える。"@ja ;
    ks:evidence <https://learn.microsoft.com/windows/win32/sysinfo/registry-virtualization> ;
    ks:verifiedAt "2026-08-20" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/win16-application/> ;
    rdf:predicate ks:incompatibleWith ;
    rdf:object <https://comcomponent.com/knowledge/wow64/> ;
    schema:description "64bit WindowsのWOW64が対象にするのは32bit x86アプリだけで、16bitアプリは実行できず起動はERROR_BAD_EXE_FORMATで失敗する。これはOSの構造上の制限であり、シムでは救えない。"@ja ;
    ks:evidence <https://learn.microsoft.com/windows/win32/winprog64/running-32-bit-applications> ;
    ks:verifiedAt "2026-08-22" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/dpi-virtualization/> ;
    rdf:predicate ks:configuredBy ;
    rdf:object <https://comcomponent.com/knowledge/compatibility-layer/> ;
    schema:description "DPI非対応アプリは96 DPI固定で描画しているものとして扱われ、高DPIディスプレイでは引き伸ばして表示される。互換性タブの「高DPI設定の上書き」はこの動作をやめさせるレイヤー指定になる。"@ja ;
    ks:evidence <https://learn.microsoft.com/windows/win32/hidpi/high-dpi-desktop-application-development-on-windows> ;
    ks:verifiedAt "2026-08-22" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/sdbinst/> ;
    rdf:predicate ks:verifiedBy ;
    rdf:object <https://comcomponent.com/knowledge/windows-sandbox/> ;
    schema:description "使い捨ての隔離環境なら、カスタム互換データベースのインストールと解除を本番端末に影響を残さず試せる。"@ja ;
    ks:evidence <https://learn.microsoft.com/windows/deployment/planning/compatibility-fix-database-management-strategies-and-deployment> ;
    ks:verifiedAt "2026-08-22" ;
    ks:certainty "context-dependent" .
