Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Задает набор каталогов по умолчанию для поиска при загрузке библиотеки 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. |
|
Если это значение используется, %windows%\system32 выполняется поиск. |
|
Если это значение используется, выполняется поиск любого пути, явно добавленного с помощью функции AddDllDirectory или SetDllDirectory . Если добавлено несколько каталогов, порядок поиска этих каталогов не определен. |
Возвращаемое значение
Если функция выполнена успешно, возвращаемое значение ненулевое.
Если функция завершается ошибкой, возвращаемое значение равно нулю. Чтобы получить расширенные сведения об ошибке, вызовите GetLastError.
Замечания
Путь поиска библиотеки DLL — это набор каталогов, которые ищут библиотеку DLL, если полный путь не указан в вызове функции LoadLibraryИли LoadLibraryEx или если указан полный путь к библиотеке DLL, но система должна искать зависимые библиотеки DLL. Дополнительные сведения о стандартном пути поиска библиотеки DLL см. в Dynamic-Link порядке поиска библиотеки.
Стандартный путь поиска dll содержит каталоги, которые могут быть уязвимы для атаки предварительной загрузки библиотеки DLL. Приложение может использовать функцию SetDefaultDllDirectory , чтобы указать путь поиска библиотеки 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 или удалить любой каталог, указанный в SetDefaultDllDirectory из пути поиска. Однако путь поиска библиотеки DLL процесса можно переопределить путем вызова LoadLibraryEx с одним или несколькими флагами LOAD_LIBRARY_SEARCH , а каталоги, добавленные с помощью AddDllDirectory , можно удалить путем вызова RemoveDllDirectory.
Windows 7, Windows Server 2008 R2, Windows Vista и Windows Server 2008: Чтобы вызвать эту функцию в приложении, используйте функцию GetProcAddress для получения адреса из Kernel32.dll. KB2533623 необходимо установить на целевой платформе.
Требования
| Требование | Ценность |
|---|---|
| Минимальный поддерживаемый клиент | Windows 8 [только классические приложения],KB2533623 в Windows 7, Windows Server 2008 R2, Windows Vista и Windows Server 2008 |
| минимальный поддерживаемый сервер | Windows Server 2012 [только классические приложения] |
| целевая платформа | Виндоус |
| Header | libloaderapi.h (включая Windows.h) |
| Library | kernel32. Lib |
| DLL | Kernel32.dll |
См. также
Порядок поиска библиотекиDynamic-Link