MSDNで説明されているDLLルックアップパスは次のとおりです。
- 現在のプロセスの実行可能モジュールが配置されているディレクトリ。
- 現在のディレクトリ。
- Windowsシステムディレクトリ。GetSystemDirectory関数は、このディレクトリのパスを取得します。
- Windowsディレクトリ。GetWindowsDirectory関数は、このディレクトリのパスを取得します。
- PATH環境変数にリストされているディレクトリ。
これは次の疑問を引き起こします:
たとえば、あるディレクトリに実行可能ファイルがあり、にc:\execdir\myexe.exe
あるDLLをロードするとしPATH
ますc:\dlldir\mydll.dll
。ここで、mydll.dll
を使用して別のDLLをロードしようとしたとしますLoadLibrary
。最初に確認されるディレクトリはどれですか?c:\dlldir
またはc:\execdir
?
上で引用したルックアップルールは、c:\execdir
「現在のプロセスの実行可能モジュールが配置されているディレクトリ」であると言われているためだと思いますが、別のソースから確認を取得するとよいでしょう。
編集:また、まったくc:\dlldir\
見られていますか?結局のところ、これは.exeが配置されている場所でも、「現在のディレクトリ」(一般的な意味での場合)でもありません。
PS私はWindowsXPと7の両方に興味があります。