SetDllDirectoryA 関数 (winbase.h)
アプリケーションの DLL の検索に使用する検索パスにディレクトリを追加します。
構文
BOOL SetDllDirectoryA(
[in, optional] LPCSTR lpPathName
);
パラメーター
[in, optional] lpPathName
検索パスに追加するディレクトリ。 このパラメーターが空の文字列 ("") の場合、呼び出しによって、既定の DLL 検索順序から現在のディレクトリが削除されます。 このパラメーターが NULL の場合、関数は既定の検索順序を復元します。
戻り値
関数が成功すると、戻り値は 0 以外になります。
関数が失敗した場合は、0 を返します。 詳細なエラー情報を得るには、GetLastError を呼び出します。
解説
SetDllDirectory 関数は、LoadLibrary 関数と LoadLibraryEx 関数に対する後続のすべての呼び出しに影響します。 また、指定したディレクトリが検索パスにある間に、安全な DLL 検索モードも効果的に無効になります。
注意
パッケージ化または保護されたプロセスを実行 していない Win32 プロセスの場合、この関数を呼び出すと、関数を呼び出したプロセスから開始された子プロセスの DLL 検索順序にも影響します。
SetDllDirectory を呼び出した後、標準の DLL 検索パスは次のようになります。
- アプリケーションの読み込み元のディレクトリ。
- lpPathName パラメーターで指定されたディレクトリ。
- システム ディレクトリです。 GetSystemDirectory 関数を使用して、このディレクトリのパスを取得します。 このディレクトリの名前は System32 です。
- 16 ビット システム ディレクトリ。 このディレクトリのパスを取得する関数はありませんが、検索されます。 このディレクトリの名前は System です。
- Windows ディレクトリ。 GetWindowsDirectory 関数を使用して、このディレクトリのパスを取得します。
- PATH 環境変数に一覧表示されているディレクトリ。
LoadLibrary と LoadLibraryEx で使用される標準の検索パスに戻すには、NULL を指定して SetDllDirectory を呼び出します。 これにより、 SafeDllSearchMode レジストリ値に基づいて安全な DLL 検索モードも復元されます。
この関数を使用するアプリケーションをコンパイルするには、_WIN32_WINNTを 0x0502 以降として定義します。 詳細については、「 Windows ヘッダーの使用」を参照してください。
注意
winbase.h ヘッダーは、SetDllDirectory をエイリアスとして定義し、UNICODE プリプロセッサ定数の定義に基づいて、この関数の ANSI または Unicode バージョンを自動的に選択します。 encoding-neutral エイリアスの使用を encoding-neutral ではないコードと混在すると、コンパイル エラーまたはランタイム エラーが発生する不一致が発生する可能性があります。 詳細については、「 関数プロトタイプの規則」を参照してください。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows Vista、WINDOWS XP と SP1 [デスクトップ アプリのみ] |
サポートされている最小のサーバー | Windows Server 2003 (デスクトップ アプリのみ) |
対象プラットフォーム | Windows |
ヘッダー | winbase.h (Windows.h を含む) |
Library | Kernel32.lib |
[DLL] | Kernel32.dll |