@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/03/24/002-windows-dll-name-resolution/#article>
    schema:about <https://comcomponent.com/knowledge/dll-search-order/>, <https://comcomponent.com/knowledge/dll-hijacking/> ;
    schema:mentions <https://comcomponent.com/knowledge/dll-redirection/>, <https://comcomponent.com/knowledge/api-set/>, <https://comcomponent.com/knowledge/sxs-manifest-redirection/>, <https://comcomponent.com/knowledge/loaded-module-list/>, <https://comcomponent.com/knowledge/known-dlls/>, <https://comcomponent.com/knowledge/safe-dll-search-mode/>, <https://comcomponent.com/knowledge/package-dependency-graph/>, <https://comcomponent.com/knowledge/packaged-app/>, <https://comcomponent.com/knowledge/unpackaged-app/>, <https://comcomponent.com/knowledge/current-folder-search/>, <https://comcomponent.com/knowledge/setdlldirectory/>, <https://comcomponent.com/knowledge/adddlldirectory/>, <https://comcomponent.com/knowledge/setdefaultdlldirectories/>, <https://comcomponent.com/knowledge/loadlibraryex/>, <https://comcomponent.com/knowledge/fullpath-load/>, <https://comcomponent.com/knowledge/dependent-dll-resolution/>, <https://comcomponent.com/knowledge/dllimportsearchpath/>, <https://comcomponent.com/knowledge/bare-name-loadlibrary/>, <https://comcomponent.com/knowledge/dll-search-path-hardening/>, <https://comcomponent.com/knowledge/listdlls-tool/>, <https://comcomponent.com/knowledge/tasklist-command/>, <https://comcomponent.com/knowledge/procmon/> .

<https://comcomponent.com/knowledge/dll-search-order/> a skos:Concept ;
    skos:prefLabel "DLLの検索順序"@ja ;
    skos:definition "Windowsが実行ファイルの起動時に限らず、LoadLibrary系APIによる動的な読み込み時も含めて、DLL redirectionやKnown DLLsなどの前段ルールを経てDLLを探す、決まった順序でフォルダーを辿る仕組み。"@ja ;
    skos:altLabel "DLL探索順"@ja ;
    ks:uses <https://comcomponent.com/knowledge/dll-redirection/> ;
    ks:uses <https://comcomponent.com/knowledge/api-set/> ;
    ks:uses <https://comcomponent.com/knowledge/sxs-manifest-redirection/> ;
    ks:uses <https://comcomponent.com/knowledge/loaded-module-list/> ;
    ks:uses <https://comcomponent.com/knowledge/known-dlls/> ;
    ks:verifiedBy <https://comcomponent.com/knowledge/procmon/> .

<https://comcomponent.com/knowledge/dll-hijacking/> a skos:Concept ;
    skos:prefLabel "DLLハイジャッキング(DLL preloading攻撃)"@ja ;
    skos:definition "フルパスなしの動的ロードと、攻撃者が支配できる検索対象ディレクトリの組み合わせによって、悪意あるDLLをアプリの権限で実行させる攻撃。"@ja ;
    skos:altLabel "DLL Hijacking" ;
    skos:altLabel "Binary Planting" .

<https://comcomponent.com/knowledge/dll-redirection/> a skos:Concept ;
    skos:prefLabel "DLLリダイレクション(.local)"@ja ;
    skos:definition "実行ファイルと同じ場所に「実行ファイル名.local」という目印を置くと、ローダーが実行ファイルのフォルダを先に見るようになる仕組み。"@ja ;
    skos:altLabel "DLL Redirection" ;
    skos:altLabel ".local" ;
    skos:altLabel "DotLocal" .

<https://comcomponent.com/knowledge/api-set/> a skos:Concept ;
    skos:prefLabel "API set"@ja ;
    skos:definition "api-ms-win-...のような契約名で、実装している物理DLLを隠す仮想エイリアスの仕組み。"@ja ;
    skos:altLabel "Windows API sets" ;
    skos:altLabel "api-ms-win-" .

<https://comcomponent.com/knowledge/sxs-manifest-redirection/> a skos:Concept ;
    skos:prefLabel "SxSマニフェストリダイレクション"@ja ;
    skos:definition "マニフェストに記された依存関係に基づき、どのバージョンのDLLへ結び付ける(bind)かをローダーが判断する仕組み。"@ja ;
    skos:altLabel "SxS manifest redirection" ;
    skos:altLabel "side-by-side" .

<https://comcomponent.com/knowledge/loaded-module-list/> a skos:Concept ;
    skos:prefLabel "loaded-module list"@ja ;
    skos:definition "同じモジュール名のDLLが既にそのプロセスのメモリにロードされていないかを、ファイルシステム検索より前に確認する仕組み。どのフォルダから読まれたかに関係なく、読み込み済みならそれが使われる。"@ja ;
    skos:altLabel "ロード済みモジュール一覧"@ja ;
    ks:verifiedBy <https://comcomponent.com/knowledge/listdlls-tool/> ;
    ks:verifiedBy <https://comcomponent.com/knowledge/tasklist-command/> .

<https://comcomponent.com/knowledge/known-dlls/> a skos:Concept ;
    skos:prefLabel "Known DLLs"@ja ;
    skos:definition "Windowsがそのバージョンで既知とみなすDLLの一覧で、該当するDLLはシステム側のコピーが使われる。レジストリのKnownDLLsキーで確認できる。"@ja ;
    skos:altLabel "KnownDLLs" .

<https://comcomponent.com/knowledge/package-dependency-graph/> a skos:Concept ;
    skos:prefLabel "package dependency graph"@ja ;
    skos:definition "アプリのパッケージ本体と、パッケージマニフェストのDependenciesセクションに書かれた依存パッケージの集合。マニフェストに書かれた順に検索される。Windows 11 バージョン21H2以降、unpackaged appの検索順序にも含まれる。"@ja ;
    skos:altLabel "パッケージ依存グラフ"@ja .

<https://comcomponent.com/knowledge/current-folder-search/> a skos:Concept ;
    skos:prefLabel "current folderの検索"@ja ;
    skos:definition "unpackaged appの標準検索順序に含まれる、プロセスのカレントディレクトリを対象にした検索段。safe DLL search modeの有効・無効で順位が変わる。"@ja ;
    skos:altLabel "カレントフォルダ検索"@ja ;
    ks:configuredBy <https://comcomponent.com/knowledge/safe-dll-search-mode/> .

<https://comcomponent.com/knowledge/safe-dll-search-mode/> a skos:Concept ;
    skos:prefLabel "safe DLL search mode"@ja ;
    skos:definition "既定で有効な設定で、current folderを検索順序の後ろへ移す。レジストリ値SafeDllSearchModeを0にすると無効になる。"@ja ;
    skos:altLabel "SafeDllSearchMode" .

<https://comcomponent.com/knowledge/packaged-app/> a skos:Concept ;
    skos:prefLabel "packaged app"@ja ;
    skos:definition "MSIXなどのパッケージとして配布・インストールされるアプリ。package dependency graphがより前段で効くなど、unpackaged appとは異なる検索順序が定義される。"@ja ;
    skos:altLabel "パッケージアプリ"@ja ;
    skos:altLabel "MSIXアプリ"@ja ;
    ks:incompatibleWith <https://comcomponent.com/knowledge/unpackaged-app/> ;
    ks:uses <https://comcomponent.com/knowledge/package-dependency-graph/> .

<https://comcomponent.com/knowledge/unpackaged-app/> a skos:Concept ;
    skos:prefLabel "unpackaged app"@ja ;
    skos:definition "MSIXなどのパッケージを使わず、従来どおりフォルダに実行ファイルを置く形で配布されるアプリ。"@ja ;
    skos:altLabel "アンパッケージアプリ"@ja ;
    skos:altLabel "従来型のデスクトップアプリ"@ja .

<https://comcomponent.com/knowledge/setdlldirectory/> a skos:Concept ;
    skos:prefLabel "SetDllDirectory"@ja ;
    skos:definition "DLL検索順序を変更するWin32 APIで、safe DLL search modeを実質的に無効化する副作用を持つ。親プロセスで呼ぶと子プロセスの検索順序にも影響し得る。"@ja ;
    ks:incompatibleWith <https://comcomponent.com/knowledge/safe-dll-search-mode/> ;
    ks:notRecommendedFor <https://comcomponent.com/knowledge/dll-search-path-hardening/> .

<https://comcomponent.com/knowledge/setdefaultdlldirectories/> a skos:Concept ;
    skos:prefLabel "SetDefaultDllDirectories"@ja ;
    skos:definition "標準のDLL検索パスから脆弱になりやすいディレクトリを外し、プロセス既定の検索対象を限定するWin32 API。プロセス単位で効き、標準形へ戻すことはできない。"@ja ;
    ks:mitigates <https://comcomponent.com/knowledge/dll-hijacking/> .

<https://comcomponent.com/knowledge/adddlldirectory/> a skos:Concept ;
    skos:prefLabel "AddDllDirectory"@ja ;
    skos:definition "DLLの検索対象ディレクトリを1つ追加するWin32 API。LOAD_LIBRARY_SEARCH_USER_DIRSと組み合わせて使い、複数追加時の探索順は未規定。"@ja .

<https://comcomponent.com/knowledge/loadlibraryex/> a skos:Concept ;
    skos:prefLabel "LoadLibraryEx"@ja ;
    skos:definition "LOAD_WITH_ALTERED_SEARCH_PATHやLOAD_LIBRARY_SEARCH_*フラグでDLLの検索挙動を明示的に変更できるDLLロード用Win32 API。"@ja ;
    skos:altLabel "LoadLibraryExW" ;
    skos:altLabel "LoadLibraryExA" ;
    ks:uses <https://comcomponent.com/knowledge/adddlldirectory/> ;
    ks:recommendedFor <https://comcomponent.com/knowledge/dll-search-path-hardening/> .

<https://comcomponent.com/knowledge/dll-search-path-hardening/> a skos:Concept ;
    skos:prefLabel "DLL検索空間の絞り込み"@ja ;
    skos:definition "SetDefaultDllDirectoriesやLoadLibraryExのLOAD_LIBRARY_SEARCH_*フラグ、AddDllDirectoryを組み合わせて、DLLの検索対象を明示的に絞り込む設計方針。"@ja ;
    skos:altLabel "検索空間の明示的な限定"@ja ;
    ks:mitigates <https://comcomponent.com/knowledge/dll-hijacking/> .

<https://comcomponent.com/knowledge/bare-name-loadlibrary/> a skos:Concept ;
    skos:prefLabel "裸の名前によるLoadLibrary"@ja ;
    skos:definition "フルパスを指定せずモジュール名だけでLoadLibraryを呼び出す実装。攻撃者が支配できる検索対象ディレクトリと組み合わさるとDLLハイジャックにつながる。"@ja ;
    skos:altLabel "フルパスなしの動的ロード"@ja ;
    ks:mayCause <https://comcomponent.com/knowledge/dll-hijacking/> .

<https://comcomponent.com/knowledge/fullpath-load/> a skos:Concept ;
    skos:prefLabel "フルパス指定でのDLLロード"@ja ;
    skos:definition "LoadLibrary系APIにモジュール名だけでなく完全なパスを渡してDLLをロードする方式。裸の名前によるロードに起因するDLLハイジャックを軽減する。"@ja ;
    skos:altLabel "フルパス指定ロード"@ja ;
    ks:notRecommendedFor <https://comcomponent.com/knowledge/dependent-dll-resolution/> .

<https://comcomponent.com/knowledge/dependent-dll-resolution/> a skos:Concept ;
    skos:prefLabel "依存DLLの解決"@ja ;
    skos:definition "ロードされたDLLがさらに要求する依存DLLの名前解決。最初のDLLをフルパス指定でロードしても、依存DLLはモジュール名だけで検索される扱いになり自動的には固定されない。"@ja ;
    skos:altLabel "依存DLL解決"@ja .

<https://comcomponent.com/knowledge/dllimportsearchpath/> a skos:Concept ;
    skos:prefLabel "DllImportSearchPath(.NET)"@ja ;
    skos:definition ".NETのP/InvokeやNativeLibrary.Loadで、DLLの検索先を限定する属性・パラメーター。値はLOAD_LIBRARY_SEARCH_*フラグに対応する。"@ja ;
    skos:altLabel "DefaultDllImportSearchPaths" ;
    ks:uses <https://comcomponent.com/knowledge/loadlibraryex/> .

<https://comcomponent.com/knowledge/procmon/> a skos:Concept ;
    skos:prefLabel "Process Monitor(procmon.exe)"@ja ;
    skos:definition "ファイルI/O・レジストリ・プロセス/スレッド活動をリアルタイムに監視できるSysinternalsのツール。Advanced Outputを有効にすると、IRPやファストI/Oのカーネル側の語彙で操作を表示する。"@ja ;
    skos:altLabel "Procmon" ;
    skos:altLabel "Process Monitor" .

<https://comcomponent.com/knowledge/listdlls-tool/> a skos:Concept ;
    skos:prefLabel "ListDLLs"@ja ;
    skos:definition "プロセス横断で、どのDLLがどこから読み込まれているかをコマンドラインで確認できるSysinternalsのツール。"@ja ;
    skos:altLabel "Sysinternals ListDLLs" .

<https://comcomponent.com/knowledge/tasklist-command/> a skos:Concept ;
    skos:prefLabel "tasklist /m"@ja ;
    skos:definition "指定したモジュールを読み込んでいるプロセスの名前とPIDを一覧するWindowsのコマンド。"@ja ;
    skos:altLabel "tasklist" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/dll-search-order/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/dll-redirection/> ;
    schema:description "DLL名前解決は、ファイルシステム検索の前段ルールの1つとしてDLL redirectionを評価する"@ja ;
    ks:evidence <https://learn.microsoft.com/windows/win32/dlls/dynamic-link-library-search-order> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/dll-search-order/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/api-set/> ;
    schema:description "DLL名前解決は、ファイルシステム検索の前段ルールの1つとしてAPI setによる契約名から実装DLLへの変換を評価する"@ja ;
    ks:evidence <https://learn.microsoft.com/windows/win32/dlls/dynamic-link-library-search-order> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/dll-search-order/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/sxs-manifest-redirection/> ;
    schema:description "DLL名前解決は、ファイルシステム検索の前段ルールの1つとしてSxSマニフェストによるバージョンbindingを評価する"@ja ;
    ks:evidence <https://learn.microsoft.com/windows/win32/dlls/dynamic-link-library-search-order> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/dll-search-order/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/loaded-module-list/> ;
    schema:description "DLL名前解決は、ファイルシステム検索の前段ルールの1つとして同名モジュールが既にロード済みかを確認する"@ja ;
    ks:evidence <https://learn.microsoft.com/windows/win32/dlls/dynamic-link-library-search-order> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/dll-search-order/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/known-dlls/> ;
    schema:description "DLL名前解決は、ファイルシステム検索の前段ルールの1つとしてKnown DLLsへの該当を確認する"@ja ;
    ks:evidence <https://learn.microsoft.com/windows/win32/dlls/dynamic-link-library-search-order> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/dll-search-order/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/package-dependency-graph/> ;
    schema:description "Windows 11 バージョン21H2以降、unpackaged appの検索順序にもpackage dependency graphが前段ルールとして含まれる"@ja ;
    ks:evidence <https://learn.microsoft.com/windows/win32/dlls/dynamic-link-library-search-order> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/current-folder-search/> ;
    rdf:predicate ks:configuredBy ;
    rdf:object <https://comcomponent.com/knowledge/safe-dll-search-mode/> ;
    schema:description "current folderが検索順序の何番目に来るかは、safe DLL search mode(レジストリ値SafeDllSearchMode)の有効・無効で変わる"@ja ;
    ks:evidence <https://learn.microsoft.com/windows/win32/dlls/dynamic-link-library-search-order> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/packaged-app/> ;
    rdf:predicate ks:incompatibleWith ;
    rdf:object <https://comcomponent.com/knowledge/unpackaged-app/> ;
    schema:description "packaged appとunpackaged appでは検索順序の定義自体が異なり、同じ実行形態が両方に同時に該当することはない"@ja ;
    ks:evidence <https://learn.microsoft.com/windows/win32/dlls/dynamic-link-library-search-order> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/packaged-app/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/package-dependency-graph/> ;
    schema:description "packaged appではpackage dependency graphがより前段で効き、unpackaged appとは検索の考え方自体が異なる"@ja ;
    ks:evidence <https://learn.microsoft.com/windows/win32/dlls/dynamic-link-library-search-order> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/setdlldirectory/> ;
    rdf:predicate ks:incompatibleWith ;
    rdf:object <https://comcomponent.com/knowledge/safe-dll-search-mode/> ;
    schema:description "SetDllDirectoryはsafe DLL search modeを実質的に無効化する振る舞いを持つ"@ja ;
    ks:evidence <https://learn.microsoft.com/windows/win32/dlls/dynamic-link-library-search-order> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/setdefaultdlldirectories/> ;
    rdf:predicate ks:mitigates ;
    rdf:object <https://comcomponent.com/knowledge/dll-hijacking/> ;
    schema:description "SetDefaultDllDirectoriesで標準検索パスから脆弱になりやすいディレクトリを外すことは、DLL preloading攻撃の軽減につながる"@ja ;
    ks:evidence <https://learn.microsoft.com/windows/win32/api/libloaderapi/nf-libloaderapi-setdefaultdlldirectories> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/adddlldirectory/> ;
    rdf:predicate ks:requires ;
    rdf:object <https://comcomponent.com/knowledge/setdefaultdlldirectories/> ;
    schema:description "AddDllDirectoryで追加したディレクトリを「プロセス既定の検索」に含めるには、SetDefaultDllDirectoriesにUSER_DIRSを含めておく必要がある。ただしSetDefaultDllDirectoriesを呼ばなくても、LoadLibraryExの呼び出しごとにLOAD_LIBRARY_SEARCH_USER_DIRSフラグを指定すれば、追加したディレクトリをその呼び出しの探索対象にできる"@ja ;
    ks:evidence <https://learn.microsoft.com/windows/win32/api/libloaderapi/nf-libloaderapi-adddlldirectory> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/loadlibraryex/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/adddlldirectory/> ;
    schema:description "LoadLibraryExはLOAD_LIBRARY_SEARCH_USER_DIRSフラグと組み合わせて、AddDllDirectoryで追加したディレクトリを探索範囲に含める"@ja ;
    ks:evidence <https://learn.microsoft.com/windows/win32/api/libloaderapi/nf-libloaderapi-loadlibraryexa> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/setdlldirectory/> ;
    rdf:predicate ks:notRecommendedFor ;
    rdf:object <https://comcomponent.com/knowledge/dll-search-path-hardening/> ;
    schema:description "SetDllDirectoryは検索順序を変えるだけでなくsafe DLL search modeを実質的に無効化するため、検索空間を絞る安全側の設計に使うのは推奨されない"@ja ;
    ks:evidence <https://learn.microsoft.com/windows/win32/dlls/dynamic-link-library-search-order> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/loadlibraryex/> ;
    rdf:predicate ks:recommendedFor ;
    rdf:object <https://comcomponent.com/knowledge/dll-search-path-hardening/> ;
    schema:description "LOAD_LIBRARY_SEARCH_*フラグで探索範囲を明示的に絞るLoadLibraryExは、安全側の検索空間設計に推奨される"@ja ;
    ks:evidence <https://learn.microsoft.com/windows/win32/api/libloaderapi/nf-libloaderapi-loadlibraryexa> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/dll-search-path-hardening/> ;
    rdf:predicate ks:mitigates ;
    rdf:object <https://comcomponent.com/knowledge/dll-hijacking/> ;
    schema:description "検索空間を明示的に絞り、current folderや不用意なPATH依存を避けることが、DLL preloading攻撃を避ける基本形になる"@ja ;
    ks:evidence <https://learn.microsoft.com/windows/win32/dlls/dynamic-link-library-security> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/bare-name-loadlibrary/> ;
    rdf:predicate ks:mayCause ;
    rdf:object <https://comcomponent.com/knowledge/dll-hijacking/> ;
    schema:description "フルパス指定なしの動的ロードと、攻撃者が支配できる検索対象ディレクトリの組み合わせがDLL preloading攻撃やbinary planting攻撃につながる"@ja ;
    ks:evidence <https://learn.microsoft.com/windows/win32/dlls/dynamic-link-library-security> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/fullpath-load/> ;
    rdf:predicate ks:mitigates ;
    rdf:object <https://comcomponent.com/knowledge/dll-hijacking/> ;
    schema:description "DLLをフルパス指定でロードすることは、裸の名前によるロードに起因するDLLハイジャックの軽減につながる"@ja ;
    ks:evidence <https://learn.microsoft.com/windows/win32/dlls/dynamic-link-library-security> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/fullpath-load/> ;
    rdf:predicate ks:notRecommendedFor ;
    rdf:object <https://comcomponent.com/knowledge/dependent-dll-resolution/> ;
    schema:description "最初のDLLをフルパス指定でロードしても依存DLLはモジュール名だけで検索される扱いになるため、依存DLLの解決先まで固定する手段としてフルパス指定だけに頼るのは推奨されない"@ja ;
    ks:evidence <https://learn.microsoft.com/windows/win32/dlls/dynamic-link-library-search-order> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/dllimportsearchpath/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/loadlibraryex/> ;
    schema:description ".NETのDllImportSearchPath属性の値は、LoadLibraryExのLOAD_LIBRARY_SEARCH_*フラグに対応する"@ja ;
    ks:evidence <https://learn.microsoft.com/windows/win32/api/libloaderapi/nf-libloaderapi-loadlibraryexa> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/dll-search-order/> ;
    rdf:predicate ks:verifiedBy ;
    rdf:object <https://comcomponent.com/knowledge/procmon/> ;
    schema:description "実際にどのフォルダからDLLが読まれたかは、Process MonitorのResult列(NAME NOT FOUND/SUCCESS)を追うことで確認できる"@ja ;
    ks:evidence <https://learn.microsoft.com/sysinternals/downloads/procmon> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/loaded-module-list/> ;
    rdf:predicate ks:verifiedBy ;
    rdf:object <https://comcomponent.com/knowledge/listdlls-tool/> ;
    schema:description "同名DLLが別フォルダから既にロード済みかどうかは、ListDLLsやProcess Explorerのモジュール一覧で確認できる"@ja ;
    ks:evidence <https://learn.microsoft.com/sysinternals/downloads/listdlls> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/loaded-module-list/> ;
    rdf:predicate ks:verifiedBy ;
    rdf:object <https://comcomponent.com/knowledge/tasklist-command/> ;
    schema:description "指定したモジュールを読み込んでいるプロセスは、tasklist /mで一覧できる"@ja ;
    ks:evidence <https://learn.microsoft.com/windows-server/administration/windows-commands/tasklist> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .
