Probleme mit Datei- + Pfadlängen > 25x Zeichen

German support forum

Moderators: white, Hacker, Stefan2

Post Reply
User avatar
Tahattmeruh
Senior Member
Senior Member
Posts: 229
Joined: 2003-05-16, 13:35 UTC

Probleme mit Datei- + Pfadlängen > 25x Zeichen

Post by *Tahattmeruh »

Ich habe einen Pfad 3 Unterordnern mit 240 Zeichen Länge.
Dann noch eine Datei mit 40 Zeichen Länge.
Egal ob im Explorer oder in TC, die meisten Kontextmenüeinträge
fehlen und Drag and Drop in anderer Programme funktioniert
auch nicht. Ist das immer so, ein Fehler in meinem Windows
oder gibt es einen Registryeintrag den ich setzen kann um
dieses Verhalten zu verhindern?

Image: https://i.imgur.com/ggDaGDG.png

Image: https://i.imgur.com/DrizZlq.png

Die Programme die ich benutze kommen alle damit zurecht wenn ich das Programm selber starte und mit Datei öffnen die Datei direkt öffne.
User avatar
Dalai
Power Member
Power Member
Posts: 9364
Joined: 2005-01-28, 22:17 UTC
Location: Meiningen (Südthüringen)

Post by *Dalai »

Jep, völlig normal, da das Kontextmenü nun einmal vom Explorer bzw. genaugenommen von der Shell erzeugt wird. Es gibt noch sehr viele Umbauarbeiten, bis alle Teile in Windows überlange Pfade wirklich vollständig unterstützen. Und vermutlich nochmal länger wird's dauern, bis die Shell Extensions der Drittanbieter das ebenfalls tun (die meisten, wenn nicht gar alle der fehlenden Einträge in deinen Screenshots stammen von Shell Extensions).

Grüße
Dalai
#101164 Personal licence
Ryzen 5 2600, 16 GiB RAM, ASUS Prime X370-A, Win7 x64

Plugins: Services2, Startups, CertificateInfo, SignatureInfo, LineBreakInfo - Download-Mirror
User avatar
Tahattmeruh
Senior Member
Senior Member
Posts: 229
Joined: 2003-05-16, 13:35 UTC

Post by *Tahattmeruh »

Was muss eine Shellextension tun damit sie bei überlangen Pfaden trotzdem erscheint?
User avatar
Dalai
Power Member
Power Member
Posts: 9364
Joined: 2005-01-28, 22:17 UTC
Location: Meiningen (Südthüringen)

Post by *Dalai »

Tahattmeruh wrote:Was muss eine Shellextension tun damit sie bei überlangen Pfaden trotzdem erscheint?
Überlange Pfade verarbeiten können. Da hilft nur, den Autor der entsprechenden Software anzuschreiben, in der Hoffnung, dass er da ein Problem sieht und das ändern will und kann.

-----

Ich stelle mir die Arbeitsweise von Shell Extensions im Kontextmenü folgendermaßen vor (ob es wirklich so läuft, weiß ich nicht, das können andere viel besser beurteilen). Die Shell fragt alle Shell Extensions, die für den entsprechenden Dateityp registriert sind, welche(n) Eintrag/Einträge sie von der jeweiligen Shell Extension anzeigen soll. Dazu übergibt die Shell den Pfad dieser Datei nacheinander (oder gleichzeitig) an die Shell Extensions. Damit diese entscheiden kann, ob sie ihren Eintrag anzeigen lassen will bzw. wie viele oder welche (oder wie auch immer), muss sie das anhand des übergebenen Pfads tun. Wenn sie nichts mit dem Pfad anfangen kann (weil zu lang, wegen ungültiger Zeichen (Unicode) o.ä.), dann meldet sie im Zweifel an die Shell zurück, dass es nix anzuzeigen gibt.

Grüße
Dalai
#101164 Personal licence
Ryzen 5 2600, 16 GiB RAM, ASUS Prime X370-A, Win7 x64

Plugins: Services2, Startups, CertificateInfo, SignatureInfo, LineBreakInfo - Download-Mirror
User avatar
Tahattmeruh
Senior Member
Senior Member
Posts: 229
Joined: 2003-05-16, 13:35 UTC

Post by *Tahattmeruh »

Ja. Aber wie?
Laut https://msdn.microsoft.com/en-us/library/windows/desktop/aa365247(v=vs.85).aspx
kann ich entweder den Registry-Eintrag setzen (ist gesetzt) oder ein Manifest erstellen. Beides ist gesetzt und trotzdem erscheint der Eintrag nicht.
User avatar
Dalai
Power Member
Power Member
Posts: 9364
Joined: 2005-01-28, 22:17 UTC
Location: Meiningen (Südthüringen)

Post by *Dalai »

Eine Shell Extension ist eine DLL irgendwo auf deiner Platte. Diese DLL enthält Funktionen zum Verarbeiten der Pfade, die von der Shell kommen. Und diese Funktionen müssen die Pfade verarbeiten können. Die Implementierung in der DLL muss also geändert werden, und das kann (normalerweise) nur der Autor der DLL. Das heißt, du als Nutzer kannst gar nichts weiter tun - außer den Autor der jeweiligen Shell Extension anzuschreiben, wie ich bereits anmerkte.

Die Aktivierung überlanger Pfade via Registry hat gar keinen Einfluss auf das Verhalten einer Shell Extension. Und ein Manifest muss in jede Software eingebettet werden, die überlange Pfade unterstützt - sinnvollerweise erst dann, wenn das tatsächlich der Fall ist. Die Grundproblematik, dass die Software (auch Shell Extensions) entsprechend angepasst werden muss, bleibt in jedem Fall bestehen.

Grüße
Dalai
#101164 Personal licence
Ryzen 5 2600, 16 GiB RAM, ASUS Prime X370-A, Win7 x64

Plugins: Services2, Startups, CertificateInfo, SignatureInfo, LineBreakInfo - Download-Mirror
User avatar
Tahattmeruh
Senior Member
Senior Member
Posts: 229
Joined: 2003-05-16, 13:35 UTC

Post by *Tahattmeruh »

Ich glaube ich weiß woran es liegt.
bei den überlagen Pfaden fängt der Pfad mit \\?\c:\ an anstatt nur c:\
das scheint die ShellExtension durcheinander zu bringen. Grundsätzlich kommt sie mit den langen Pfaden und Dateien nämlich zurecht. Danke für die Fehlersuche.
User avatar
Dalai
Power Member
Power Member
Posts: 9364
Joined: 2005-01-28, 22:17 UTC
Location: Meiningen (Südthüringen)

Post by *Dalai »

Tahattmeruh wrote:bei den überlagen Pfaden fängt der Pfad mit \\?\c:\ an anstatt nur c:\
Richtig. Soweit ich weiß, MUSS das auch so sein! Der Präfix "\\?" zeigt an, ob es sich um einen überlangen Pfad handelt.
Grundsätzlich kommt sie mit den langen Pfaden und Dateien nämlich zurecht.
Woran machst du fest, dass sie (die Shell Extension, welche überhaupt?) damit zurecht käme? Beachte, dass eine Shell Extension nicht die Software selbst ist. Beispiel: Nehmen wir mal 7zip aus deinen Screenshots, dessen Einträge bei überlangen Pfaden im Kontextmenü fehlen. Die Shell Extension kommt ganz offensichtlich nicht mit überlangen Pfaden zurecht. Ob nun 7zip selbst überlange Pfade unterstützt oder nicht (kann durchaus sein), spielt dabei keine Rolle.

Grüße
Dalai
#101164 Personal licence
Ryzen 5 2600, 16 GiB RAM, ASUS Prime X370-A, Win7 x64

Plugins: Services2, Startups, CertificateInfo, SignatureInfo, LineBreakInfo - Download-Mirror
Post Reply