Funzione SetDefaultDllDirectories (libloaderapi.h)
Specifica un set predefinito di directory da cercare quando il processo chiamante carica una DLL. Questo percorso di ricerca viene usato quando LoadLibraryEx viene chiamato senza flag di LOAD_LIBRARY_SEARCH .
Sintassi
BOOL SetDefaultDllDirectories(
[in] DWORD DirectoryFlags
);
Parametri
[in] DirectoryFlags
Directory da cercare. Questo parametro può essere una combinazione dei valori seguenti.
Valore | Significato |
---|---|
|
Se questo valore viene usato, viene eseguita la ricerca nella directory di installazione dell'applicazione. |
|
Questo valore è una combinazione di LOAD_LIBRARY_SEARCH_APPLICATION_DIR, LOAD_LIBRARY_SEARCH_SYSTEM32 e LOAD_LIBRARY_SEARCH_USER_DIRS.
Questo valore rappresenta il numero massimo consigliato di directory che un'applicazione deve includere nel percorso di ricerca dll. |
|
Se questo valore viene usato, viene eseguita la ricerca di %windows%\system32. |
|
Se questo valore viene usato, viene eseguito il ricerca di qualsiasi percorso aggiunto in modo esplicito usando la funzione AddDllDirectory o SetDllDirectory. Se sono state aggiunte più directory, l'ordine in cui tali directory vengono ricercate non è specificato. |
Valore restituito
Se la funzione ha esito positivo, il valore restituito è diverso da zero.
Se la funzione ha esito negativo, il valore restituito è zero. Per informazioni dettagliate sull'errore, chiamare GetLastError.
Commenti
Il percorso di ricerca dll è il set di directory che vengono ricercate per una DLL quando un percorso completo non è specificato in una chiamata di funzione LoadLibrary o LoadLibraryEx o quando viene specificato un percorso completo della DLL, ma il sistema deve cercare DLL dipendenti. Per altre informazioni sul percorso di ricerca DLL standard, vedere Ordine di ricerca libreria di collegamento dinamico.
Il percorso di ricerca DLL standard contiene directory che possono essere vulnerabili a un attacco di pre-caricamento dll. Un'applicazione può usare la funzione SetDefaultDllDirectories per specificare un percorso di ricerca DLL predefinito per il processo che elimina le directory più vulnerabili e limita le altre directory che vengono ricercate. Il percorso di ricerca dll del processo si applica solo al processo di chiamata e persiste per la vita del processo.
Se il parametro DirectoryFlags specifica più flag, le directory vengono eseguite nella ricerca nell'ordine seguente:
- Directory contenente la DLL (LOAD_LIBRARY_SEARCH_DLL_LOAD_DIR). Questa directory viene cercata solo per le dipendenze della DLL caricata.
- Directory dell'applicazione (LOAD_LIBRARY_SEARCH_APPLICATION_DIR).
- Percorsi aggiunti in modo esplicito al percorso di ricerca dell'applicazione con la funzione AddDllDirectory (LOAD_LIBRARY_SEARCH_USER_DIRS) o la funzione SetDllDirectory . Se sono stati aggiunti più percorsi, l'ordine in cui vengono cercati i percorsi non è specificato.
- Directory di sistema (LOAD_LIBRARY_SEARCH_SYSTEM32).
Non è possibile ripristinare il percorso di ricerca DLL standard o rimuovere qualsiasi directory specificata con SetDefaultDllDirectories dal percorso di ricerca. Tuttavia, il percorso di ricerca DLL del processo può essere sottoposto a override chiamando LoadLibraryEx con uno o più flag LOAD_LIBRARY_SEARCH e le directory aggiunte con AddDllDirectory possono essere rimosse chiamando RemoveDllDirectory.
Windows 7, Windows Server 2008 R2, Windows Vista e Windows Server 2008: Per chiamare questa funzione in un'applicazione, usare la funzione GetProcAddress per recuperare l'indirizzo da Kernel32.dll. KB2533623 deve essere installato nella piattaforma di destinazione.
Requisiti
Client minimo supportato | Windows 8 [solo app desktop],KB2533623 in Windows 7, Windows Server 2008 R2, Windows Vista e Windows Server 2008 |
Server minimo supportato | Windows Server 2012 [solo app desktop] |
Piattaforma di destinazione | Windows |
Intestazione | libloaderapi.h (includere Windows.h) |
DLL | Kernel32.dll |
Vedere anche
Ordine di ricerca libreria di collegamento dinamico