4

MSDNで説明されているDLLルックアップパスは次のとおりです。

  1. 現在のプロセスの実行可能モジュールが配置されているディレクトリ。
  2. 現在のディレクトリ。
  3. Windowsシステムディレクトリ。GetSystemDirectory関数は、このディレクトリのパスを取得します。
  4. Windowsディレクトリ。GetWindowsDirectory関数は、このディレクトリのパスを取得します。
  5. 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の両方に興味があります。

4

1 に答える 1

4

はい、それは最初に実行可能ディレクトリであり、これが特定の状況下でセキュリティの脆弱性につながる可能性があることがわかりました。このメカニズムによってアプリケーションが危険にさらされないようにするためのアドバイスがそのページにあります。

于 2011-04-25T13:00:48.370 に答える