Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Задает набор каталогов по умолчанию для поиска, когда вызывающий процесс загружает библиотеку DLL. Этот путь поиска используется при вызове LoadLibraryEx без флагов LOAD_LIBRARY_SEARCH .
Синтаксис
BOOL SetDefaultDllDirectories(
[in] DWORD DirectoryFlags
);
Параметры
[in] DirectoryFlags
Каталоги для поиска. Этот параметр может быть любым сочетанием следующих значений.
Значение | Значение |
---|---|
|
Если используется это значение, выполняется поиск в каталоге установки приложения. |
|
Это значение представляет собой сочетание 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 Library Search Order.
Стандартный путь поиска 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 процесса можно переопределить, вызвав 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 [только классические приложения] |
Целевая платформа | Windows |
Header | libloaderapi.h (включая Windows.h) |
DLL | Kernel32.dll |
См. также
Порядок поиска библиотеки динамической компоновки (DLL)