SetDllDirectoryA-Funktion (winbase.h)
Fügt dem Suchpfad zum Suchen nach DLLs für die Anwendung ein Verzeichnis hinzu.
Syntax
BOOL SetDllDirectoryA(
[in, optional] LPCSTR lpPathName
);
Parameter
[in, optional] lpPathName
Das Verzeichnis, das dem Suchpfad hinzugefügt werden soll. Wenn es sich bei diesem Parameter um eine leere Zeichenfolge ("") handelt, entfernt der Aufruf das aktuelle Verzeichnis aus der Standard-DLL-Suchreihenfolge. Wenn dieser Parameter NULL ist, stellt die Funktion die Standardsuchreihenfolge wieder her.
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
Die SetDllDirectory-Funktion wirkt sich auf alle nachfolgenden Aufrufe der Funktionen LoadLibrary und LoadLibraryEx aus. Außerdem wird der sichere DLL-Suchmodus effektiv deaktiviert, während sich das angegebene Verzeichnis im Suchpfad befindet.
Hinweis
Für Win32-Prozesse, die keinen gepackten oder geschützten Prozess ausführen, wirkt sich das Aufrufen dieser Funktion auch auf die DLL-Suchreihenfolge der untergeordneten Prozesse aus, die mit dem Prozess gestartet wurden, der die Funktion aufgerufen hat.
Nach dem Aufruf von SetDllDirectory lautet der Standard-DLL-Suchpfad:
- Das Verzeichnis, aus dem die Anwendung geladen wurde.
- Das durch den lpPathName-Parameter angegebene Verzeichnis.
- Das Systemverzeichnis Verwenden Sie die GetSystemDirectory-Funktion , um den Pfad dieses Verzeichnisses abzurufen. Der Name dieses Verzeichnisses lautet System32.
- Das 16-Bit-Systemverzeichnis. Es gibt keine Funktion, die den Pfad dieses Verzeichnisses abruft, aber es wird durchsucht. Der Name dieses Verzeichnisses lautet System.
- Das Windows-Verzeichnis. Verwenden Sie die GetWindowsDirectory-Funktion , um den Pfad dieses Verzeichnisses abzurufen.
- Die Verzeichnisse, die in der PATH-Umgebungsvariablen aufgeführt sind.
Um den von LoadLibrary und LoadLibraryEx verwendeten Standardsuchpfad zu rückgängig machen, rufen Sie SetDllDirectory mit NULL auf. Dadurch wird auch der sichere DLL-Suchmodus basierend auf dem Registrierungswert SafeDllSearchMode wiederhergestellt.
Um eine Anwendung zu kompilieren, die diese Funktion verwendet, definieren Sie _WIN32_WINNT als 0x0502 oder höher. Weitere Informationen finden Sie unter Verwenden der Windows-Header.
Hinweis
Der winbase.h-Header definiert SetDllDirectory als Alias, der die ANSI- oder Unicode-Version dieser Funktion basierend auf der Definition der UNICODE-Präprozessorkonstante automatisch auswählt. Das Mischen der Verwendung des codierungsneutralen Alias mit nicht codierungsneutralem Code kann zu Nichtübereinstimmungen führen, die zu Kompilierungs- oder Laufzeitfehlern führen. Weitere Informationen finden Sie unter Konventionen für Funktionsprototypen.
Anforderungen
Anforderung | Wert |
---|---|
Unterstützte Mindestversion (Client) | Windows Vista, Windows XP mit SP1 [nur Desktop-Apps] |
Unterstützte Mindestversion (Server) | Windows Server 2003 [nur Desktop-Apps] |
Zielplattform | Windows |
Kopfzeile | winbase.h (einschließlich Windows.h) |
Bibliothek | Kernel32.lib |
DLL | Kernel32.dll |