Freigeben über


SetDllDirectoryA-Funktion (winbase.h)

Fügt dem Suchpfad ein Verzeichnis hinzu, das zum Suchen von DLLs für die Anwendung verwendet wird.

Syntax

BOOL SetDllDirectoryA(
  [in, optional] LPCSTR lpPathName
);

Parameter

[in, optional] lpPathName

Das Verzeichnis, das dem Suchpfad hinzugefügt werden soll. Wenn dieser Parameter eine leere Zeichenfolge ("") ist, entfernt der Aufruf das aktuelle Verzeichnis aus der standardmäßigen 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 fehlschlägt, ist der Rückgabewert null. Rufen Sie GetLastErrorauf, um erweiterte Fehlerinformationen zu erhalten.

Bemerkungen

Die SetDllDirectory--Funktion wirkt sich auf alle nachfolgenden Aufrufe der LoadLibrary und LoadLibraryEx--Funktionen aus. Außerdem wird der sichere DLL-Suchmodus deaktiviert, während sich das angegebene Verzeichnis im Suchpfad befindet.

Anmerkung

Bei Win32-Prozessen, die nicht Ausführen eines verpackten oder geschützten Prozesses , wirkt sich das Aufrufen dieser Funktion auch auf die DLL-Suchreihenfolge der untergeordneten Prozesse aus dem Prozess aus, der die Funktion aufgerufen hat.

Nach dem Aufrufen SetDllDirectorylautet der standardmäßige DLL-Suchpfad:

  1. Das Verzeichnis, aus dem die Anwendung geladen wurde.
  2. Das durch den parameter lpPathName angegebene Verzeichnis.
  3. Das Systemverzeichnis. Verwenden Sie die GetSystemDirectory--Funktion, um den Pfad dieses Verzeichnisses abzurufen. Der Name dieses Verzeichnisses ist 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-Umgebungsvariable aufgeführt sind.
Jedes Mal, wenn die SetDllDirectory Funktion aufgerufen wird, ersetzt sie das im vorherigen SetDllDirectory Aufruf angegebene Verzeichnis. Um mehrere Verzeichnisse anzugeben, verwenden Sie die AddDllDirectory-Funktion, und rufen Sie LoadLibraryEx- mit LOAD_LIBRARY_SEARCH_USER_DIRS auf.

Rufen Sie SetDllDirectory mit NULL auf, um den von LoadLibraryEx und LoadLibraryEx-verwendeten Standardsuchpfad zurückzurufen. Dadurch wird auch der sichere DLL-Suchmodus basierend auf dem SafeDllSearchMode Registrierungswert 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.

Anmerkung

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 Code, der nicht codierungsneutral ist, 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
mindestens unterstützte Client- Windows Vista, Windows XP mit SP1 [nur Desktop-Apps]
mindestens unterstützte Server- Windows Server 2003 [Nur Desktop-Apps]
Zielplattform- Fenster
Header- winbase.h (enthalten Windows.h)
Library Kernel32.lib
DLL- Kernel32.dll

Siehe auch

AddDllDirectory-

Dynamic-Link Bibliothekssuchreihenfolge

GetDllDirectory-

GetSystemDirectory-

GetWindowsDirectory-

LoadLibrary-

LoadLibraryEx-