マニフェストを使用したLoadLibraryでのWindowsパス検索
-
03-07-2019 - |
質問
パスなしで LoadLibrary
を呼び出すと(たとえば、 LoadLibrary(" whatever.dll")
)、Windowsは通常、標準の検索アルゴリズムに従います。 EXEの検索に使用します。
これは、アプリケーションマニフェストがシステムDLLの特定のバージョン(comctl32.dll 6.0など)を指定しているとします。その場合、 LoadLibrary(" comctl32.dll")
はすぐに正しい並列フォルダーに移動しますか、それとも何らかの検索を実行しますか?
解決
アプリケーションは、フルパスを指定するか、DLLリダイレクトを使用するか、マニフェストを使用することにより、DLLのロード元を制御できます。これらの方法のいずれも使用されていない場合、このトピックで説明されているように、システムはロード時にDLLを検索します。
したがって、はい、マニフェストが存在する場合、直接SxSフォルダーに移動します。
他のヒント
ライブラリが見つからないという問題が発生したときにローダーをプローブするには、" sxstrace"特徴。 www.codeproject.com/KB/DLL/QueryAssemblyIdentities.aspx はいくつかの詳細を提供しますマニフェストとWinSxsの依存関係について。
所属していません StackOverflow