Функция SetDllDirectoryA (winbase.h)

Добавляет каталог в путь поиска, используемый для поиска библиотек DLL для приложения.

Синтаксис

BOOL SetDllDirectoryA(
  [in, optional] LPCSTR lpPathName
);

Параметры

[in, optional] lpPathName

Каталог, добавляемый в путь поиска. Если этот параметр является пустой строкой (""), вызов удаляет текущий каталог из порядка поиска DLL по умолчанию. Если этот параметр имеет значение NULL, функция восстанавливает порядок поиска по умолчанию.

Возвращаемое значение

Если функция выполняется успешно, возвращается ненулевое значение.

Если функция выполняется неудачно, возвращается нулевое значение. Дополнительные сведения об ошибке можно получить, вызвав GetLastError.

Комментарии

Функция SetDllDirectory влияет на все последующие вызовы функций LoadLibrary и LoadLibraryEx . Он также эффективно отключает безопасный режим поиска DLL, пока указанный каталог находится в пути поиска.

Примечание

Для процессов Win32, которые не выполняют упакованный или защищенный процесс, вызов этой функции также повлияет на порядок поиска dll дочерних процессов, запущенных из процесса, который вызвал функцию.

После вызова SetDllDirectory стандартный путь поиска DLL:

  1. Каталог, из которого загружено приложение.
  2. Каталог, заданный параметром lpPathName .
  3. Системный каталог. Используйте функцию GetSystemDirectory , чтобы получить путь к этому каталогу. Имя этого каталога — System32.
  4. 16-разрядный системный каталог. Нет функции, которая получает путь к этому каталогу, но выполняется поиск. Имя этого каталога — System.
  5. Каталог Windows. Используйте функцию GetWindowsDirectory , чтобы получить путь к этому каталогу.
  6. Каталоги, перечисленные в переменной среды PATH.
При каждом вызове функции SetDllDirectory она заменяет каталог, указанный в предыдущем вызове SetDllDirectory . Чтобы указать несколько каталогов, используйте функцию AddDllDirectory и вызовите LoadLibraryEx с LOAD_LIBRARY_SEARCH_USER_DIRS.

Чтобы отменить изменения к стандартному пути поиска, используемому LoadLibrary и LoadLibraryEx, вызовите Метод SetDllDirectory со значением NULL. При этом также восстанавливается безопасный режим поиска DLL на основе значения реестра SafeDllSearchMode .

Чтобы скомпилировать приложение, использующее эту функцию, определите _WIN32_WINNT как 0x0502 или более поздней версии. Дополнительные сведения см. в разделе Использование заголовков Windows.

Примечание

Заголовок winbase.h определяет SetDllDirectory как псевдоним, который автоматически выбирает версию ANSI или Юникод этой функции на основе определения константы препроцессора UNICODE. Сочетание использования псевдонима, не зависящий от кодировки, с кодом, не зависящим от кодировки, может привести к несоответствиям, которые приводят к ошибкам компиляции или среды выполнения. Дополнительные сведения см. в разделе Соглашения для прототипов функций.

Требования

Требование Значение
Минимальная версия клиента Windows Vista, Windows XP с пакетом обновления 1 (SP1) [только классические приложения]
Минимальная версия сервера Windows Server 2003 [только классические приложения]
Целевая платформа Windows
Header winbase.h (включая Windows.h)
Библиотека Kernel32.lib
DLL Kernel32.dll

См. также

AddDllDirectory

Порядок поиска библиотеки динамической компоновки (DLL)

GetDllDirectory

GetSystemDirectory

GetWindowsDirectory

LoadLibrary

LoadLibraryEx