Was ist der längste Dateipfad, den Windows verarbeiten kann?

29122
Ron Tuffin

Was ist der längste Dateipfad, den Windows verarbeiten kann?

56

4 Antworten auf die Frage

47
Adam Matan

Maximale Pfadlänge (von MSDN)

In der Windows-API (mit einigen Ausnahmen, die in den folgenden Absätzen erläutert werden) ist die maximale Länge für einen Pfad MAX_PATH, die als 260 Zeichen definiert ist . Ein lokaler Pfad ist in der folgenden Reihenfolge strukturiert: Laufwerkbuchstabe, Doppelpunkt, Backslash, durch Backslashes getrennte Komponenten und ein abschließendes Nullzeichen. Beispielsweise ist der maximale Pfad auf Laufwerk D "D: \ <einige Zeichenfolge mit 256 Zeichen> <NUL>", wobei "<NUL>" das unsichtbare abschließende Nullzeichen für die aktuelle System-Codepage darstellt. (Die Zeichen <> werden hier zur besseren Übersicht verwendet und können nicht Teil einer gültigen Pfadzeichenfolge sein.)

Sie sollten erwähnen, dass Sie mit Pfaden umgehen können, die diese Grenze überschreiten, indem Sie `\\? \` Voranstellen (ich denke, es war diese Zeichenfolge). Joey vor 14 Jahren 4
Sie sollten auch die im 2. Absatz erwähnte Grenze für Unicode-Pfade angeben: ~ 32k akira vor 14 Jahren 3
260? 256 Zeichen ignorieren Laufwerk: \ und Abschlusszeichen. Es ist 2009, warum bekommen wir nur ein Byte an Charakteren, mit denen man spielen kann? Phoshi vor 14 Jahren 0
@Phoshi Die APIs für die Verwendung längerer Pfade werden vom Betriebssystem standardmäßig nicht verwendet, da die Übergabe von beliebig langen Zeichenfolgen an Anwendungen erfolgt, die von Entwicklern schlecht geschrieben wurden, die wussten, dass der Pfad niemals länger als 260 Zeichen sein konnte, und beschlossen, eine feste Länge zuzuweisen Das Halten des Arrays würde zu einer großen Anzahl von Pufferüberläufen führen, die dazu führen, dass Anwendungen abstürzen und / oder ausgenutzt werden. Etwas bessere Implementierungen von Entwicklern mit demselben falschen Wissen würden abgebrochen, da ihre Pfadüberprüfung einen zu langen Fehler gemeldet hat. Dan Neely vor 11 Jahren 0
15
joe

XP-Dateipfad: 250 Zeichen

Vista-Dateipfad - 260 Zeichen

Bei einer Neuinstallation von Windows XP sind 152 Zeichen der längste Pfad.

Bei einer semi-clean-Installation von Windows Vista sind 195 Zeichen der längste Pfad:

Windows XP erlaubt Dateinamen mit bis zu 255 Zeichen

Windows Vista erlaubt noch längere Dateinamen mit bis zu 260 Zeichen.

http://www.codinghorror.com/blog/archives/000729.html

Dies gilt nur, wenn Sie nicht die Unicode-API verwenden, die das Limit etwas erweitert (~ 32k, siehe http://msdn.microsoft.com/de-de/library/aa365247%28VS.85%29.aspx#. maximal% 5Fpath% 5Flength) akira vor 14 Jahren 5
Hmmm. Bei dieser Geschwindigkeit sollte das Limit in Win7 bei etwa 265 Zeichen liegen. quack quixote vor 14 Jahren 1
Warum sollten sie das Limit um zehn Zeichen erhöhen? Scheint es nicht wert, oder? Phoshi vor 14 Jahren 0
Das ist falsch. Die maximale Dateinamenlänge beträgt immer noch 255 Zeichen in Windows, da dies die NTFS-Grenze ist phuclv vor 5 Jahren 0
7
ST3

Windows-Konstante MAX_PATHist gleich 260, wie andere Antworten besagen, der wirklich längste Pfad ist jedoch 32767.

Sehen Sie hier .

32k ist während der Verwendung von UNICODE, aber jetzt müssen wir es verwenden, daher sollten wir auch diese maximale Pfadlänge verwenden.

Sie können auch einen Blick auf meine Antwort in SO werfen, wodurch einige Details zur maximalen Pfadlänge näher erläutert werden.

0
phuclv

Die "klassische" Grenze beträgt 260 Zeichen: drive letter+ :\+ 255 characters of filename+ \(oder für Rundung) + null terminatorwie in den anderen Antworten erwähnt

Das tatsächliche interne Limit beträgt jedoch 32767 Zeichen, das durch Anhängen erreicht werden kann \\?\, um einen vollständig qualifizierten Pfad zu erhalten

Die Windows-API verfügt über viele Funktionen, die auch über Unicode-Versionen verfügen, um einen erweiterten Pfad für eine maximale Gesamtpfadlänge von 32.767 Zeichen zuzulassen. Diese Art von Pfad setzt sich aus Komponenten zusammen, die durch Backslashes voneinander getrennt sind, und zwar jeweils bis zu dem im lpMaximumComponentLengthParameter der GetVolumeInformationFunktion zurückgegebenen Wert (dieser Wert beträgt normalerweise 255 Zeichen). Verwenden Sie das "\\?\"Präfix, um einen Pfad mit erweiterter Länge anzugeben . Zum Beispiel "\\?\D:\very long path".

Wenn die vollständig qualifizierten Pfade aus bestimmten Gründen nicht verwendet werden können, kann auf tiefere Verzeichnisse zugegriffen werden, indem ein Laufwerkbuchstabe mit subst/ diskpartoder ein Verknüpfungs- / Symlink erstellt wird, um den Pfad zu verkürzen

Seit Windows 10 wurde das MAX_PATHLimit ebenfalls entfernt, jedoch nicht standardmäßig

Ab Windows 10, Version 1607, wurden die MAX_PATHEinschränkungen der allgemeinen Win32-Datei- und Verzeichnisfunktionen entfernt. Sie müssen jedoch dem neuen Verhalten zustimmen.

https://docs.microsoft.com/en-us/windows/desktop/FileIO/naming-a-file