SetDefaultDllDirectories-Funktion (libloaderapi.h)
Gibt einen Standardsatz von Verzeichnissen an, die beim Laden einer DLL durch den aufrufenden Prozess gesucht werden sollen. Dieser Suchpfad wird verwendet, wenn LoadLibraryEx ohne LOAD_LIBRARY_SEARCH-Flags aufgerufen wird.
Syntax
BOOL SetDefaultDllDirectories(
[in] DWORD DirectoryFlags
);
Parameter
[in] DirectoryFlags
Die zu durchsuchenden Verzeichnisse. Dieser Parameter kann eine beliebige Kombination der folgenden Werte sein.
Wert | Bedeutung |
---|---|
|
Wenn dieser Wert verwendet wird, wird das Installationsverzeichnis der Anwendung durchsucht. |
|
Dieser Wert ist eine Kombination aus LOAD_LIBRARY_SEARCH_APPLICATION_DIR, LOAD_LIBRARY_SEARCH_SYSTEM32 und LOAD_LIBRARY_SEARCH_USER_DIRS.
Dieser Wert stellt die empfohlene maximale Anzahl von Verzeichnissen dar, die eine Anwendung in den DLL-Suchpfad aufnehmen sollte. |
|
Wenn dieser Wert verwendet wird, wird %windows%\system32 durchsucht. |
|
Wenn dieser Wert verwendet wird, wird jeder Pfad durchsucht, der explizit mit der Funktion AddDllDirectory oder SetDllDirectory hinzugefügt wurde. Wenn mehrere Verzeichnisse hinzugefügt wurden, ist die Reihenfolge, in der diese Verzeichnisse durchsucht werden, nicht angegeben. |
Rückgabewert
Wenn die Funktion erfolgreich ist, ist der Rückgabewert ungleich Null.
Wenn die Funktion fehlerhaft ist, ist der Rückgabewert null. Um erweiterte Fehlerinformationen zu erhalten, rufen Sie GetLastError auf.
Hinweise
Der DLL-Suchpfad ist der Satz von Verzeichnissen, die nach einer DLL durchsucht werden, wenn kein vollständiger Pfad in einem LoadLibrary - oder LoadLibraryEx-Funktionsaufruf angegeben wird oder wenn ein vollständiger Pfad zur DLL angegeben wird, aber das System nach abhängigen DLLs suchen muss. Weitere Informationen zum Standardmäßigen DLL-Suchpfad finden Sie unter Dynamic-Link Library Search Order.
Der Standardmäßige DLL-Suchpfad enthält Verzeichnisse, die anfällig für einen DLL-Vorladeangriff sein können. Eine Anwendung kann die SetDefaultDllDirectories-Funktion verwenden, um einen Standard-DLL-Suchpfad für den Prozess anzugeben, der die anfälligsten Verzeichnisse eliminiert und die anderen durchsuchten Verzeichnisse einschränkt. Der Prozess-DLL-Suchpfad gilt nur für den aufrufenden Prozess und bleibt für die Lebensdauer des Prozesses erhalten.
Wenn der DirectoryFlags-Parameter mehrere Flags angibt, werden die Verzeichnisse in der folgenden Reihenfolge durchsucht:
- Das Verzeichnis, das die DLL (LOAD_LIBRARY_SEARCH_DLL_LOAD_DIR) enthält. Dieses Verzeichnis wird nur nach Abhängigkeiten der geladenen DLL durchsucht.
- Das Anwendungsverzeichnis (LOAD_LIBRARY_SEARCH_APPLICATION_DIR).
- Pfade, die dem Anwendungssuchpfad explizit mit der Funktion AddDllDirectory (LOAD_LIBRARY_SEARCH_USER_DIRS) oder der SetDllDirectory-Funktion hinzugefügt wurden. Wenn mehrere Pfade hinzugefügt wurden, ist die Reihenfolge, in der die Pfade durchsucht werden, nicht angegeben.
- Das Systemverzeichnis (LOAD_LIBRARY_SEARCH_SYSTEM32).
Es ist nicht möglich, zum Standardmäßigen DLL-Suchpfad zu rückgängig machen oder ein verzeichnis, das mit SetDefaultDllDirectories angegeben ist, aus dem Suchpfad zu entfernen. Der Prozess-DLL-Suchpfad kann jedoch überschrieben werden, indem LoadLibraryEx mit einem oder mehreren LOAD_LIBRARY_SEARCH-Flags aufgerufen wird, und Verzeichnisse, die mit AddDllDirectory hinzugefügt wurden, können entfernt werden, indem RemoveDllDirectory aufgerufen wird.
Windows 7, Windows Server 2008 R2, Windows Vista und Windows Server 2008: Um diese Funktion in einer Anwendung aufzurufen, verwenden Sie die GetProcAddress-Funktion , um ihre Adresse aus Kernel32.dll abzurufen. KB2533623 muss auf der Zielplattform installiert sein.
Anforderungen
Unterstützte Mindestversion (Client) | Windows 8 [nur Desktop-Apps],KB2533623 unter Windows 7, Windows Server 2008 R2, Windows Vista und Windows Server 2008 |
Unterstützte Mindestversion (Server) | Windows Server 2012 [nur Desktop-Apps] |
Zielplattform | Windows |
Kopfzeile | libloaderapi.h (Einschließen von Windows.h) |
DLL | Kernel32.dll |
Siehe auch
Dynamic Link Library-Suchreihenfolge