Freigeben über


SetCurrentDirectory-Funktion (winbase.h)

Hiermit wird das aktuelle Verzeichnis für den aktuellen Prozess geändert.

Syntax

BOOL SetCurrentDirectory(
  [in] LPCTSTR lpPathName
);

Parameter

[in] lpPathName

Der Pfad zum neuen aktuellen Verzeichnis. Dieser Parameter kann einen relativen oder vollständigen Pfad angeben. In beiden Fällen wird der vollständige Pfad des angegebenen Verzeichnisses berechnet und als aktuelles Verzeichnis gespeichert.

Weitere Informationen finden Sie unter Benennen von Dateien, Pfaden und Namespaces.

Standardmäßig ist der Name auf MAX_PATH Zeichen beschränkt.

Tipp

Ab Windows 10 Version 1607 können Sie die MAX_PATH-Einschränkung aufheben. Weitere Informationen finden Sie im Abschnitt Maximale Pfadlängenbeschränkung unter Benennen von Dateien, Pfaden und Namespaces.

Wichtig

Das Festlegen eines aktuellen Verzeichnisses, das länger als MAX_PATH ist, führt dazu, dass CreateProcessW fehlschlägt.

Das letzte Zeichen vor dem NULL-Zeichen muss ein umgekehrter Schrägstrich ("\") sein. Wenn Sie den umgekehrten Schrägstrich nicht angeben, wird er für Sie hinzugefügt. Geben Sie >daher MAX_PATH bis 2 Zeichen für den Pfad an, es sei denn, Sie fügen den nachfolgenden umgekehrten Schrägstrich ein. Geben Sie in diesem Fall MAX_PATH-1 Zeichen für den Pfad an.

Rückgabewert

Wenn die Funktion erfolgreich ist, ist der Rückgabewert ungleich 0 (null).

Wenn die Funktion fehlschlägt, ist der Rückgabewert null. Um erweiterte Fehlerinformationen zu erhalten, rufen Sie GetLastError auf.

Hinweise

Jeder Prozess verfügt über ein einzelnes aktuelles Verzeichnis, das aus zwei Teilen besteht:

  • Ein Datenträger-Bezeichner, der entweder ein Laufwerkbuchstabe gefolgt von einem Doppelpunkt oder ein Servername und ein Freigabename (\\Servername\Freigabename) ist.
  • Ein Verzeichnis auf dem Datenträger-Designator

Das aktuelle Verzeichnis wird von allen Threads des Prozesses gemeinsam genutzt: Wenn ein Thread das aktuelle Verzeichnis ändert, wirkt sich dies auf alle Threads im Prozess aus.

Multithreadanwendungen und gemeinsam genutzter Bibliothekscode sollten den Aufruf der SetCurrentDirectory-Funktion vermeiden, da sich dies auf die Berechnung relativer Pfade auswirkt, die von anderen Threads ausgeführt werden. Umgekehrt

Multithreadanwendungen und freigegebener Bibliothekscode sollten die Verwendung relativer Pfade vermeiden, sodass sie von Änderungen am aktuellen Verzeichnis, die von anderen Threads vorgenommen werden, nicht betroffen sind.

Hinweis

Das aktuelle Verzeichnis für einen Prozess ist gesperrt, während der Prozess ausgeführt wird. Dadurch wird verhindert, dass das Verzeichnis gelöscht, verschoben oder umbenannt wird.

Unter Windows 8 und Windows Server 2012 wird diese Funktion von den folgenden Technologien unterstützt.

Technologie Unterstützt
SMB 3.0-Protokoll (Server Message Block) Ja
SMB 3.0 Transparent Failover (TFO) Ja
SMB 3.0 mit Dateifreigaben mit horizontaler Skalierung (SO) Ja
Dateisystem mit freigegebenen Clustervolumes (CsvFS) Ja
Robustes Dateisystem (Resilient File System, ReFS) Ja

Beispiele

Ein Beispiel finden Sie unter Ändern des aktuellen Verzeichnisses.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows XP [Desktop-Apps | UWP-Apps]
Unterstützte Mindestversion (Server) Windows Server 2003 [Desktop-Apps | UWP-Apps]
Zielplattform Windows
Kopfzeile winbase.h (Windows.h einschließen)
Bibliothek Kernel32.lib
DLL Kernel32.dll

Siehe auch