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:

  1. Das Verzeichnis, aus dem die Anwendung geladen wurde.
  2. Das durch den lpPathName-Parameter angegebene Verzeichnis.
  3. Das Systemverzeichnis Verwenden Sie die GetSystemDirectory-Funktion , um den Pfad dieses Verzeichnisses abzurufen. Der Name dieses Verzeichnisses lautet System32.
  4. Das 16-Bit-Systemverzeichnis. Es gibt keine Funktion, die den Pfad dieses Verzeichnisses abruft, aber es wird durchsucht. Der Name dieses Verzeichnisses lautet System.
  5. Das Windows-Verzeichnis. Verwenden Sie die GetWindowsDirectory-Funktion , um den Pfad dieses Verzeichnisses abzurufen.
  6. Die Verzeichnisse, die in der PATH-Umgebungsvariablen aufgeführt sind.
Jedes Mal, wenn die SetDllDirectory-Funktion aufgerufen wird, ersetzt sie das Verzeichnis, das im vorherigen SetDllDirectory-Aufruf angegeben wurde. Um mehrere Verzeichnisse anzugeben, verwenden Sie die AddDllDirectory-Funktion , und rufen Sie LoadLibraryEx mit LOAD_LIBRARY_SEARCH_USER_DIRS auf.

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

Siehe auch

AddDllDirectory

Dynamic Link Library-Suchreihenfolge

GetDllDirectory

GetSystemDirectory

GetWindowsDirectory

LoadLibrary

LoadLibraryEx