次の方法で共有


SetDefaultDllDirectories 関数 (libloaderapi.h)

呼び出し元プロセスが DLL を読み込むときに検索する既定のディレクトリ セットを指定します。 この検索パスは、 LoadLibraryExLOAD_LIBRARY_SEARCH フラグなしで呼び出されるときに使用されます。

構文

BOOL SetDefaultDllDirectories(
  [in] DWORD DirectoryFlags
);

パラメーター

[in] DirectoryFlags

検索するディレクトリ。 このパラメーターには、次の値を任意に組み合わせて使用できます。

価値 Meaning
LOAD_LIBRARY_SEARCH_APPLICATION_DIR
0x00000200
この値を使用すると、アプリケーションのインストール ディレクトリが検索されます。
LOAD_LIBRARY_SEARCH_DEFAULT_DIRS
0x00001000
この値は、 LOAD_LIBRARY_SEARCH_APPLICATION_DIRLOAD_LIBRARY_SEARCH_SYSTEM32、およびLOAD_LIBRARY_SEARCH_USER_DIRSの組み合わせ です

この値は、アプリケーションが DLL 検索パスに含める必要があるディレクトリの推奨最大数を表します。

LOAD_LIBRARY_SEARCH_SYSTEM32
0x00000800
この値を使用すると、\system32 %windows%が検索されます。
LOAD_LIBRARY_SEARCH_USER_DIRS
0x00000400
この値を使用すると、 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)。
SetDefaultDllDirectoriesLOAD_LIBRARY_SEARCH_USER_DIRSを指定しない場合、AddDllDirectory 関数で指定されたディレクトリは、LOAD_LIBRARY_SEARCH_USER_DIRSを指定する LoadLibraryEx 関数呼び出しにのみ使用されます。

標準の 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

こちらも参照ください

AddDllDirectory

Dynamic-Link ライブラリの検索順序

Dynamic-Link ライブラリのセキュリティ

LoadLibrary

LoadLibraryEx

RemoveDllDirectory