Partager via


SetDefaultDllDirectories, fonction (libloaderapi.h)

Spécifie un ensemble par défaut de répertoires à rechercher lorsque le processus appelant charge une DLL. Ce chemin de recherche est utilisé lorsque LoadLibraryEx est appelé sans indicateur LOAD_LIBRARY_SEARCH .

Syntaxe

BOOL SetDefaultDllDirectories(
  [in] DWORD DirectoryFlags
);

Paramètres

[in] DirectoryFlags

Répertoires à rechercher. Ce paramètre peut être n’importe quelle combinaison des valeurs suivantes.

Valeur Meaning
LOAD_LIBRARY_SEARCH_APPLICATION_DIR
0x00000200
Si cette valeur est utilisée, le répertoire d’installation de l’application est recherché.
LOAD_LIBRARY_SEARCH_DEFAULT_DIRS
0x00001000
Cette valeur est une combinaison de LOAD_LIBRARY_SEARCH_APPLICATION_DIR, de LOAD_LIBRARY_SEARCH_SYSTEM32 et de LOAD_LIBRARY_SEARCH_USER_DIRS.

Cette valeur représente le nombre maximal recommandé de répertoires qu’une application doit inclure dans son chemin de recherche DLL.

LOAD_LIBRARY_SEARCH_SYSTEM32
0x00000800
Si cette valeur est utilisée, %windows%\system32 est recherché.
LOAD_LIBRARY_SEARCH_USER_DIRS
0x00000400
Si cette valeur est utilisée, tout chemin d’accès explicitement ajouté à l’aide de la fonction AddDllDirectory ou SetDllDirectory est recherché. Si plusieurs répertoires ont été ajoutés, l’ordre dans lequel ces répertoires sont recherchés n’est pas spécifié.

Valeur retournée

Si la fonction réussit, la valeur de retour est différente de zéro.

Si la fonction échoue, la valeur de retour est égale à zéro. Pour obtenir des informations d’erreur étendues, appelez GetLastError.

Remarques

Le chemin de recherche DLL est l’ensemble de répertoires qui sont recherchés pour une DLL lorsqu’un chemin d’accès complet n’est pas spécifié dans un appel de fonction LoadLibrary ou LoadLibraryEx , ou lorsqu’un chemin d’accès complet à la DLL est spécifié, mais que le système doit rechercher des DLL dépendantes. Pour plus d’informations sur le chemin de recherche DLL standard, consultez Dynamic-Link ordre de recherche de bibliothèque.

Le chemin de recherche DLL standard contient des répertoires qui peuvent être vulnérables à une attaque de préchargement DLL. Une application peut utiliser la fonction SetDefaultDllDirectories pour spécifier un chemin de recherche DLL par défaut pour le processus qui élimine les répertoires les plus vulnérables et limite les autres répertoires qui sont recherchés. Le chemin de recherche DLL de processus s’applique uniquement au processus appelant et persiste pour la durée de vie du processus.

Si le paramètre DirectoryFlags spécifie plusieurs indicateurs, les répertoires sont recherchés dans l’ordre suivant :

  • Répertoire qui contient la DLL (LOAD_LIBRARY_SEARCH_DLL_LOAD_DIR). Ce répertoire est recherché uniquement pour les dépendances de la DLL en cours de chargement.
  • Répertoire de l’application (LOAD_LIBRARY_SEARCH_APPLICATION_DIR).
  • Chemins d’accès explicitement ajoutés au chemin de recherche d’application avec la fonction AddDllDirectory (LOAD_LIBRARY_SEARCH_USER_DIRS) ou la fonction SetDllDirectory . Si plusieurs chemins d’accès ont été ajoutés, l’ordre dans lequel les chemins d’accès sont recherchés n’est pas spécifié.
  • Répertoire système (LOAD_LIBRARY_SEARCH_SYSTEM32).
Si SetDefaultDllDirectories ne spécifie pas LOAD_LIBRARY_SEARCH_USER_DIRS, les répertoires spécifiés avec la fonction AddDllDirectory sont utilisés uniquement pour les appels de fonction LoadLibraryEx qui spécifient LOAD_LIBRARY_SEARCH_USER_DIRS.

Il n’est pas possible de revenir au chemin de recherche DLL standard ou de supprimer tout répertoire spécifié avec SetDefaultDllDirectories du chemin de recherche. Toutefois, le chemin de recherche DLL du processus peut être remplacé en appelant LoadLibraryEx avec un ou plusieurs indicateurs de LOAD_LIBRARY_SEARCH , et les répertoires ajoutés avec AddDllDirectory peuvent être supprimés en appelant RemoveDllDirectory.

Windows 7, Windows Server 2008 R2, Windows Vista et Windows Server 2008 : Pour appeler cette fonction dans une application, utilisez la fonction GetProcAddress pour récupérer son adresse à partir de Kernel32.dll. KB2533623 devez être installé sur la plateforme cible.

Spécifications

Requirement Valeur
Client minimum requis Windows 8 [applications de bureau uniquement],KB2533623 sur Windows 7, Windows Server 2008 R2, Windows Vista et Windows Server 2008
Serveur minimal pris en charge Windows Server 2012 [applications de bureau uniquement]
plateforme cible Fenêtres
Header libloaderapi.h (include Windows.h)
Library noyau32. Lib
DLL Kernel32.dll

Voir aussi

AddDllDirectory

ordre de recherche de bibliothèqueDynamic-Link

Sécurité de la bibliothèqueDynamic-Link

LoadLibrary

loadLibraryEx

RemoveDllDirectory