呼び出し元プロセスが DLL を読み込むときに検索する既定のディレクトリ セットを指定します。 この検索パスは、 LoadLibraryEx が LOAD_LIBRARY_SEARCH フラグなしで呼び出されるときに使用されます。
構文
BOOL SetDefaultDllDirectories(
[in] DWORD DirectoryFlags
);
パラメーター
[in] DirectoryFlags
検索するディレクトリ。 このパラメーターには、次の値を任意に組み合わせて使用できます。
| 価値 | Meaning |
|---|---|
|
この値を使用すると、アプリケーションのインストール ディレクトリが検索されます。 |
|
この値は、 LOAD_LIBRARY_SEARCH_APPLICATION_DIR、 LOAD_LIBRARY_SEARCH_SYSTEM32、およびLOAD_LIBRARY_SEARCH_USER_DIRSの組み合わせ です。
この値は、アプリケーションが DLL 検索パスに含める必要があるディレクトリの推奨最大数を表します。 |
|
この値を使用すると、\system32 %windows%が検索されます。 |
|
この値を使用すると、 AddDllDirectory または SetDllDirectory 関数を使用して明示的に追加されたパスが検索されます。 複数のディレクトリが追加されている場合、それらのディレクトリを検索する順序は指定されていません。 |
戻り値
関数が成功した場合、戻り値は 0 以外です。
関数が失敗した場合、戻り値は 0 です。 拡張エラー情報を取得するには、GetLastError
注釈
DLL 検索パスは、 LoadLibrary 関数呼び出しまたは LoadLibraryEx 関数呼び出しで完全なパスが指定されていない場合、または DLL への完全パスが指定されているが、システムが依存 DLL を検索する必要がある場合に、DLL を検索するディレクトリのセットです。 標準 DLL 検索パスの詳細については、「 Dynamic-Link ライブラリ検索順序」を参照してください。
標準の DLL 検索パスには、 DLL の事前読み込み攻撃に対して脆弱なディレクトリが含まれています。 アプリケーションでは 、SetDefaultDllDirectories 関数を使用して、最も脆弱なディレクトリを排除し、検索される他のディレクトリを制限するプロセスの既定の DLL 検索パスを指定できます。 プロセス DLL 検索パスは呼び出し元プロセスにのみ適用され、プロセスの有効期間中保持されます。
DirectoryFlags パラメーターで複数のフラグが指定されている場合、ディレクトリは次の順序で検索されます。
- DLL (LOAD_LIBRARY_SEARCH_DLL_LOAD_DIR) を含むディレクトリ。 このディレクトリは、読み込まれる DLL の依存関係のみを検索します。
- アプリケーション ディレクトリ (LOAD_LIBRARY_SEARCH_APPLICATION_DIR)。
- AddDllDirectory 関数 (LOAD_LIBRARY_SEARCH_USER_DIRS) または SetDllDirectory 関数を使用して、アプリケーション検索パスに明示的に追加されたパス。 複数のパスが追加されている場合、パスの検索順序は指定されません。
- システム ディレクトリ (LOAD_LIBRARY_SEARCH_SYSTEM32)。
標準の DLL 検索パスに戻したり、 SetDefaultDllDirectories で指定されたディレクトリを検索パスから削除したりすることはできません。 ただし、プロセス DLL 検索パスは、1 つ以上のLOAD_LIBRARY_SEARCH フラグを指定して LoadLibraryEx を呼び出すことによってオーバーライドでき、AddDllDirectory で追加されたディレクトリは RemoveDllDirectory を呼び出すことによって削除できます。
Windows 7、Windows Server 2008 R2、Windows Vista、Windows Server 2008: アプリケーションでこの関数を呼び出すには、 GetProcAddress 関数を使用して、Kernel32.dllからアドレスを取得します。 KB2533623 ターゲット プラットフォームにインストールする必要があります。
Requirements
| Requirement | 価値 |
|---|---|
| サポートされる最小クライアント | Windows 8 [デスクトップ アプリのみ]、Windows 7、Windows Server 2008 R2、Windows Vista、Windows Server 2008 のKB2533623 |
| サポートされている最小のサーバー | Windows Server 2012 [デスクトップ アプリのみ] |
| ターゲット プラットフォーム の | ウィンドウズ |
| Header | libloaderapi.h (Windows.h を含む) |
| Library | kernel32。Lib |
| DLL | Kernel32.dll |