![]() |
256-Pfadlängenbeschränkung ist in Windows 10 (1607) gefallen
Ist das schon jemand aufgefallen bzw. hat er sein programm (per Manifest) erweitert
Laut ![]() um die 256-Pfadlängengrenze für die eigene Anwendung verschwinden zu lassen
Code:
Hat das schon jemand gemacht und kann er Erfahrungen posten?
<application xmlns="urn:schemas-microsoft-com:asm.v3">
<windowsSettings xmlns:ws2="http://schemas.microsoft.com/SMI/2016/WindowsSettings"> <ws2:longPathAware>true</ws2:longPathAware> </windowsSettings> </application> |
AW: 256-Pfadlängenbeschränkung ist in Windows 10 (1607) gefallen
Ooh, ich dachte immer mit dem Registry-Schlüssel hätte man automatisch alle Anwendungen mit diesem Verhalten beglückt, das wäre ja katastrophal. Dass man das noch mit dem Manifest zusätzlich noch freischalten muss hatte ich überlesen.
|
AW: 256-Pfadlängenbeschränkung ist in Windows 10 (1607) gefallen
Der Registry-Key funktioniert auch.
Aber wer kann/will hier eine Systemweite Einstellung ändern. Macht man sowas wird man schnell für alle Probleme am PC/Server verantwortlich gemacht ("Sie haben doch da ...") |
AW: 256-Pfadlängenbeschränkung ist in Windows 10 (1607) gefallen
Windows hatte doch noch nie eine Beschränkung von den in der Windows.h angegeben 260 Bytes.
Bei dem Unicode-Windows war es schon im 32k, setzte allerdings voraus, dass du vor den Dateinamen \\?\ eingefügt hast. Zitat:
![]() |
AW: 256-Pfadlängenbeschränkung ist in Windows 10 (1607) gefallen
Zitat:
Gab auch nur selten Problem mit der Pfadlänge. Aber wenn diese jetzt relativ einfach komplett wegfällt - umso besser. |
AW: 256-Pfadlängenbeschränkung ist in Windows 10 (1607) gefallen
Selbst mit diesem Pfäfix klappte es nicht immer bei über 260 (255 nur Pfad ohne Laufwerk und abschließendes #0) Zeichen, egal in welcher Combination :cry:
C:\... \\?\C:\... \\.\C:\... \\.\$C\... \\.\ManuellerFreigabename\... \\:COMPUTERNAME:\$C\... \\localhost\$C\... \\localhost\ManuellerFreigabename\... "Tricksen" konnte man aber oftmals durch Verwendung der kurzen 8.3-Namen (allerdings natürlich nicht für den letzten Namen, beim Erstellen der Datei/Verzeichnis) \??\... Aber ich war auch auch froh das letzte Woche schon lesen zu dürfen. |
AW: 256-Pfadlängenbeschränkung ist in Windows 10 (1607) gefallen
Welche Funktionen nutzt du denn?
In der Anleitung seht: many vs all
Code:
Nutzt du ein Unicode-Delphi?
The Windows API has [B]many [/B]functions that also have Unicode versions to permit an extended-length path for a maximum total path length of 32,767 characters. This type of path is composed of components separated by backslashes, each up to the value returned in the lpMaximumComponentLength parameter of the GetVolumeInformation function (this value is commonly 255 characters). To specify an extended-length path, use the "\\?\" prefix. For example, "\\?\D:\very long path".
Wird wirklich die W-Variante und nicht die A-Version der Funktion aufgerufen? |
AW: 256-Pfadlängenbeschränkung ist in Windows 10 (1607) gefallen
Aktuell \\FRANK-AT-WORK\$D\... womit es weniger Probleme gab, als wie mit \\?\D:\...
Ich müsste mal gucken wie lang die Pfade sind, aber ich glaub noch unter 300 Zeichen. Seit Verwendung der normalen Freigabepfade gibt es gefühlt bei weniger Dateien ein Problem mit zu langen Pfaden. Selbst zu lange Pfade aus SMB-Freigaben haben mit Pfaden über 255 Zeichen (exklusive Host+Freigabename) probleme, in meinem uralten Windows 7, egal ob als gemapptes NTFS-Verzeichnis oder direkt als Freigabe, welche ja wohl auch UNC ist. Also das neue Windows 10 hierbei aber noch nicht ausprobiert. |
AW: 256-Pfadlängenbeschränkung ist in Windows 10 (1607) gefallen
Zitat:
Wir sind auf Delphi 10.2. Alles Unicode. |
AW: 256-Pfadlängenbeschränkung ist in Windows 10 (1607) gefallen
Die Programme wo ich meistens die Probleme bemerke, wurden zuletzt in XE kompiliert,
aber auch als sie noch Delphi 7 waren, wurde dort schon mit den Unicode-APIs gearbeitet. (FindFirstFileW, CreateFileW, DeleteFileW usw.) |
AW: 256-Pfadlängenbeschränkung ist in Windows 10 (1607) gefallen
Zitat:
Hast du dich hier verschrieben oder nutzt du das so wie du schreibst. Erklärt das evtl. das Problem? Für die Admin-Shares kenne ich das nur anders herum also "\\localhost\c$". |
AW: 256-Pfadlängenbeschränkung ist in Windows 10 (1607) gefallen
Ich habe kein Windows 10. Aber funktioniert ein vorangestelltes \\?\ trotzdem noch, um einen langen Pfad zu nutzen?
Schade, dass MS solch wirklich sinnvollen Sachen nicht noch schnell in Windows 7 einbauen. |
AW: 256-Pfadlängenbeschränkung ist in Windows 10 (1607) gefallen
Zitat:
Delphi-Quellcode:
oder
"\\Rechnername\Laufwerksbuchstabe$"
Delphi-Quellcode:
ergibt beim eigenen Rechner halt u. a.
"\\IP-Adresse\Laufwerksbuchstabe$"
Delphi-Quellcode:
aber auch
"\\localhost\c$"
Delphi-Quellcode:
sollte gehen.
"\\127.0.0.1\c$"
|
AW: 256-Pfadlängenbeschränkung ist in Windows 10 (1607) gefallen
Zitat:
|
AW: 256-Pfadlängenbeschränkung ist in Windows 10 (1607) gefallen
Weil es noch immer Leute gibt, die Windows 7 besser finden als Windows 10. Ich bin einer davon. Windows 10 ist zu überladen, die Updatepolitik ist nicht gut und am PC sieht es trotzdem noch immer alles aus, als ob es für Touch optimiert wäre. Genau wie Windows 8 eben.
|
AW: 256-Pfadlängenbeschränkung ist in Windows 10 (1607) gefallen
Zitat:
Für MS ist alles < Win10 mehr oder minder gestorben. Finde dich damit ab. Featureupdates gibt jeweils nur im halbjährlichen Windows-Featureupdate. Aber das ist alles OffTopic. MS hat es endlich gemacht und gut ist. Die initale Frage ob es jemand schon gemacht hat und wie seine Erfahrungen sind. |
AW: 256-Pfadlängenbeschränkung ist in Windows 10 (1607) gefallen
Jupp, sorry, hatte mich hier verschrieben.
Nutzen tue ich das mit dem $ am Ende. :oops: |
AW: 256-Pfadlängenbeschränkung ist in Windows 10 (1607) gefallen
Zitat:
|
AW: 256-Pfadlängenbeschränkung ist in Windows 10 (1607) gefallen
Mein heimisches Entwicklungsrechner-Windows 7 hat schon paar Jahre auf dem Buckel. (hiergendwie hat nie jemand Lust den mal neu aufzusetzen :stupid:)
Lebe da zeitlich eh hinterm Mond. Hatte auch vor Kurzem erst mitbekommen, dass mein mir jahrelang bekannter Externer-Festplatten-Bug (ab und an winzige Datenfehler bei Schreiben/Lesen von über 100GB) eigentlich ein USB 3.0-Bug der ersten Generation ist, der auch Datenfehler in TCP/IP schmuggelt, wenn ein LAN-USB-Adapter verwendet wird (hier sind die TCP/IP-Prüfsummen im Adapter drin behandelt, bevor es ohne weitere Checks in den Rechner geht). Da ist ab und an ein Frame (jeweils 8 Byte) im USB-FullSpeedTransfer defekt, welcher aber unbemerkt durchflutscht. Aber nö, war nicht so aufgefallen ... letzte Woche erfahren und blind angenommen es beziehe sich auf das große Oktoberupdate. Und, wie gefällt euch das nagelneue Windows? (weiter in anderem noch nicht erstellten Thread) |
AW: 256-Pfadlängenbeschränkung ist in Windows 10 (1607) gefallen
Zitat:
Das kann praktisch sein, aber es bedeutet am Ende auch nur, dass man zu faul ist, zielgerichtet eigene Shares anzulegen und mit spezifische Accounts anzulegen und zu nutzen. Sprich, man arbeitet als Admin oder Admingruppenmitglied auf dem System, was man m.E. nachwievor/mehrdennje vermeiden sollte. Es soll Leute geben, die diese Freigaben extra löschen, wenn sie einen neuen Rechner in die Finger kriegen. |
AW: 256-Pfadlängenbeschränkung ist in Windows 10 (1607) gefallen
Blöd ist nur, dass diese $-Freigaben versteckt sind und in den Eigenschaften des Laufwerks nicht angezeigt werden.
Drum werden viele wohl nicht wissen, dass man da was löschen könnte. :stupid: |
AW: 256-Pfadlängenbeschränkung ist in Windows 10 (1607) gefallen
[OT]
Die administrativen Freigaben kommen sowieso von selbst wieder: Zitat:
[/OT] Grüße Dalai |
AW: 256-Pfadlängenbeschränkung ist in Windows 10 (1607) gefallen
Um auf das ursprüngliche Thema zurückzukommen. Ich habe das hier auf einem Windows 2016 Server und auf Windows 10 ausprobiert.
Der Registrykey hebt die 260-Zeichengrenze nicht auf. Er muss aber gesetzt werden, damit der im Manifest vorhandene <longPathAware> - Eintrag berücksichtigt wird. Die Powershell arbeitet zum Beispiel auf diese Weise (im Gegensatz zum Explorer) und kann dann mit überlangen Dateinamen umgehen und auch in eigenen Programmen funktioniert das dann. Unabhängig davon funktioniert die Verwendung von \\?\. Daher bringt der Manifest-Eintrag wohl eher längerfristig was, wer aktuell mit langen Pfaden arbeiten möchte muss wohl die \\?\ verwenden. Für mich lasse ich aber momentan lieber die Finger davon - solange das OS keine vollständige Unterstützung bietet ist das Risiko Daten damit zu verstümmeln einfach zu groß. |
AW: 256-Pfadlängenbeschränkung ist in Windows 10 (1607) gefallen
Zitat:
Übrigens würde ich allen, die des Englischen mächtig sind, folgende Lektüre ans Herz legen: ![]() ![]() ![]() Ja, der Grund warum eine Anwendung selbst (über das Manifest) kundtun sollte, daß sie lange Pfadnamen versteht, sollte klar sein. Schaut man sich Funktionen wie ![]() ![]() Zitat:
Zitat:
Wer hält dich davon ab einen PWideChar-Puffer immer mit \\?\ vorzubefüllen? Du kannst ja beim Aufruf der entsprechenden API-Funktionen ganz einfach diese 4 "verbrauchten" Zeichen abziehen und @lpPath[4] übergeben, oder? Ohnehin schreiben Pfade ja quasi danach als Objekte behandelt zu werden. So gesehen böte sich an die eigenen Pfadklassen einfach aufzubohren - da muß niemand tausende Quelltextstellen anpassen :zwinker: Abgesehen davon ist die maximale Pfadlänge ohnehin eine eher verschwommene Angelegenheit. Die 32767 Zeichen sind Maximum und haben damit zu tun, daß ![]() |
AW: 256-Pfadlängenbeschränkung ist in Windows 10 (1607) gefallen
Die LongPathes gibt es schon eine ganze Weile in Windows. Einfach überall "\\?\" vorklatschen funktioniert aber nicht. Der Präfix entfernt zwar das Längenlimit von 260 Charakter, leider aber auch das Postprocessing von Pfaden. Mit entsprechenden Windowsapi-Funktionen kann man einen Pfad zuvor normalisieren. Bei uns habe ich damals extra einen Datentyp eingefügt, der dies Implizit macht. So kann man den Datentyp als Parameter für die Stellen verwenden, an denen es wichtig ist. Der Pfad selber ist aber bis dahin ein "normaler" Pfad. Generell empfiehlt es sich erst dann in den Longpath zu wandeln, wenn man auch wirklich auf Dateien zugreifen muss.
|
AW: 256-Pfadlängenbeschränkung ist in Windows 10 (1607) gefallen
Zitat:
Zitat:
![]() Zitat:
Zitat:
Ach ja, noch als Nachtrag zu meinem vorherigen Beitrag: shlwapi ist beispielsweise ganz schlimm in Sachen hartkodierte Beschränkung auf MAX_PATH, ebenso weitere Teile der "Shell", während bspw. WIN32_FIND_DATA wieder harmlos ist, weil es hier um ein einziges Segment des Pfads geht und eben nicht um den gesamten Pfad. Das soll an Beispielen erst einmal reichen. |
AW: 256-Pfadlängenbeschränkung ist in Windows 10 (1607) gefallen
Zitat:
Konkretes Beispiel: Eine kaum benutzte Dateizusammenstellung wurde von einem unserer Admins mit einer ältlichen Version eines Packprogrammes "in Sicherheit gebracht" und aus platzgründen vom Server gelöscht. Nur knapp zwei Jahre später war dann doch eine Zugriff darauf nötig. Nach dem entpacken war allerdings das Erstaunen (und das Wehklagen) groß, denn im Archiv war nichts mehr drin, was tiefer als ~260 Zeichen gelegen hatte... |
AW: 256-Pfadlängenbeschränkung ist in Windows 10 (1607) gefallen
Zitat:
|
AW: 256-Pfadlängenbeschränkung ist in Windows 10 (1607) gefallen
Zitat:
|
AW: 256-Pfadlängenbeschränkung ist in Windows 10 (1607) gefallen
Zitat:
Jupp, wer seine Backups nicht prüft, dem blühen derlei Probleme. Wobei ich mich dann noch fragen würde wo der Admin sein Handwerk gelernt hat. Aber wir hatten und haben derlei Admins auch in der Firma. Ich hab aus Spaß mal selbst die Stichprobe gewagt und von meinen Dateien auf dem gemeinsamen Dateiserver ein paar Dateien gelöscht. Etwa ein halbes Jahr später habe ich dann darum gebeten die Dateien wiederherzustellen. Ratet mal was ich als Antwort bekam. Erste Reaktion: "Das geht nicht!". Zweite Reaktion auf meine Rückfrage: "Man kann die Backups nur wieder komplett einspielen". Na supi. Da hat jemand bei der Auswahl des Backupsystems mitgedacht. Ich meine sogar Bandlaufwerke hatten ehemals die Möglichkeit einzelne Dateien wiederherzustellen, auch wenn es ein langwieriger Prozeß war (wegen hin- und herspulen). Aber Hauptsache ein Admin trabt treudoof jede Woche mit nem "Backup" zum Ort der (bezahlten) sicheren Verwahrung. Kreuzchen auf dem Fragebogen "Machen Sie regelmäßige Backups" kann damit auch gemacht werden. Wiederherstellung ist dann hoffentlich Problem der Nachfolger. IT 3.0! :wink: Aber zurück zum Thema. Umso wichtiger finde ich eigentlich, daß man lange Pfade auch heute schon unterstützt und nicht erst in zwei Jahrzehnten. Mit Junction Points kann man übrigens wunderbar auch Programme die nicht langer Pfade mächtig sind - zu einem gewissen Grad - austricksen. Besser noch, man kann mit Junction Points Pfade erzeugen die dann intern auf riesige Längen expandiert werden. Und das ganz ohne Hilfe von Präfixen. |
AW: 256-Pfadlängenbeschränkung ist in Windows 10 (1607) gefallen
Die einfachste Lösung wäre doch denke ich, gar nicht so lange Pfade zu benutzen... ;-)
|
AW: 256-Pfadlängenbeschränkung ist in Windows 10 (1607) gefallen
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:17 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz