![]() |
UNC Pfade + \\?\ MAX_MATH usw. (Win Ver. 1607)
Hallo,
habe ich das richtig verstanden? Bei längeren Pfaden (260) gibt man "\\?\" mit an. Zum Beispiel: "\\?\c:\huhu\ich\bin\der\boss\usw...\" und ich glaube bei Root aber nicht (falsch="\\?\c:\") Beispiel für normales UNC: weniger als 260 = "\\SERVER\huhu\ich\bin\der\boss\" mehr als 260 = \\?\UNC\SERVER\huhu\ich\bin\der\boss\usw...\" Bis hier korrekt? Ab Windows 10 - 1607 benötigt man bei einigen Funktionen das "\\?\" nicht mehr. Also bedeutet das, dass ich bei UNC-Pfaden mit mehr als 260 Zeichen dann hier ebenfalls nicht mehr "\\?\UNC\" angeben muss? Das 1607 Update wird z.B. bei "FindFirstFileW" angegeben. Zum Beispiel bei "GetFinalPathNameByHandleW" nicht. Ich dachte ja erst, dass alle Funktionen mit "W" am Schluss, dieses Update bekommen haben. Wenn das nicht so ist (also nicht alle Funktionen), gibt es da irgendwo eine Info-Liste von Microsoft? Ich kann mir nämlich vorstellen, dass auf den "docs.microsoft.com" Seiten (wo jede Funktion beschrieben wird) evtl. die Info zu den 1607Update nicht immer angegeben wurde, die Funktion es aber dann doch kann. |
AW: UNC Pfade + \\?\ MAX_MATH usw. (Win Ver. 1607)
Zitat:
|
AW: UNC Pfade + \\?\ MAX_MATH usw. (Win Ver. 1607)
Zitat:
Zitat:
Siehe auch den zugehörigen ![]() Zitat:
Zitat:
Zitat:
Grüße Dalai |
AW: UNC Pfade + \\?\ MAX_MATH usw. (Win Ver. 1607)
Die MaxPath Sache erkläre ich in diesem Video ab ca. 5m40s.
Ich muss aber gestehen, dass ich nicht auf die UNC Sache eingehe. Dateipfade - ein Einstieg, Vorstellung von nützlichen Funktionen und das MAX_PATH Limit brechen ![]() |
AW: UNC Pfade + \\?\ MAX_MATH usw. (Win Ver. 1607)
Jupp, seit Win10 1607 ist die MAX_PATH-Grenze bei vielen APIs inzwischen aufgehoben, auch ohne mit UNC rumspielen zu müssen,
allerdings muß es in der Registry erst aktiviert werden, zusätzlich zum Manifest. HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem > LongPathsEnabled Und nein, neu kompiliert muß nichts werden. Das Manifest liegt in den Resourcen und Diese lassen sich auch nachträglich noch editieren. Eventuell muß man noch neu signieren, jedenfalls wenn die EXE signiert war. |
AW: UNC Pfade + \\?\ MAX_MATH usw. (Win Ver. 1607)
Danke für Eure Anregungen und Infos.
Also wenn das alles erst aktiviert werden muss bzw. ab und zu (wenn es halt noch nicht ist beim Endbenutzer), dann ist der alte Weg ("\\?\" und "\\?\UNC\") wohl besser. Blöd ist aber echt, wenn man vor doofen Problemen steht, die sowieso immer vorhanden sind. Zum Beispiel das laden eines Icons aus EXE-Dateien in so einem langen Pfad. Da geht halt nicht SHGetFileInfo und andere Icon-Routinen wegen MAX_PATH. Die Umwandlung zu einem kurzen Pfad gibt es zwar auch aber es wird beschrieben, dass dies auch nicht immer geht. Bei dem Icon-Beispiel, wäre man wohl nur auf der sicheren Seite, wenn man aus der Exe-Datei den Icon-Header sucht und direkt das Icon mit CreateFile herausliest. |
AW: UNC Pfade + \\?\ MAX_MATH usw. (Win Ver. 1607)
Ja, ganz früher gab es nur Kurz,
dann wurde Optional zusätzlich noch Lang angehängt (in FAT: in mehreren speziellen "Kurz"-Einträgen auf den originalen Eintrag folgend) Später wurden im NTFS standardmäßig keine Kurzen Einträge mehr erzeugt, (oder man muß in der Registry die Einstellungen den NTFS-Treiber anpassen und diese Funktion wieder aktivieren) außer man erstellte die Datei mit der ANSI-API (CreateFileA), bzw. wenn man mit gewissen ANSI-APIs nach Dateien suchte (FindFirstFileA), dann wurde auch noch der Kurzname angelegt (falls nötig) und aktuell, oder war's zukünftig, soll auch dieses Verhalten entfernt werden (dann nur noch lang). Und trotzt UNC hat man auch keine Garantie, dass es funktioniert. * so habe ich in einem ältenen Programm (im Manifest nichts zur Windowskompatibilität) auch mit UNC keinen Zugriff auf längere Pfade * und selbst im Explorer hatte ich "manchmal" Probleme -> beim Kopieren von NTFS via SMB auf ein Linux, da wurden im Linux alle längeren Pfade ohne Fehlermeldung abgeschnitten * * geknallt hatte es nur, wenn zufällig ein \ bzw. / als letztes im Datei-Pfad zurück blieb * * ich weiß aber nicht wer genau es Abschnitt (Windows, SMB oder Linux) ... hatte es versucht rauszubekommen, aber absichtlich zu lange Pfade erzeugt und damit rumgespielt, da ging zufällig immer alles |
AW: UNC Pfade + \\?\ MAX_MATH usw. (Win Ver. 1607)
Zitat:
Grüße Dalai |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:52 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