Je grootste beperking zal zijn dat zelfs met deze toggle het long path-gedrag opt-in is via het applicatiemanifest. Als een applicatie niet aangeeft met lange paden om te kunnen gaan, zal het ook niet werken. De Windows-API heeft hier al jaren geen last meer van, maar weinig programma's geven aan met lange paden te werken. Zodra dat soort programma's mainstream worden, weet ik zeker dat Microsoft de feature opt-out maakt in plaats van opt-in.
Je kunt proberen om handmatig overal .manifest-bestanden neer te zetten naast de .exes of de bestaande aan te passen. Dit werkt als het manifest niet in de executable zelf zit. Okee, veel programma's gemaakt zonder die flag zullen crashen of alsnog incomplete paden laten zien als je dit doet, maar hé, de Windows-API gedraagt zich tenminste.
Je breekt tenslotte het contract tussen OS en applicatie achteraf. GetLongPathNameW heeft sinds zijn introductie altijd maximaal 260 tekens naar een array geschreven, nu kan daar ineens 32k in gaan. Dat gaat niet werken, dat wordt regelrechte geheugencorruptie. Zo'n beetje API accepteert daarom ook een argument voor de buffergrootte welke doorgaans... MAX_PATH is.
Handmatig inschakelen van lange paden zal dus alleen effect hebben op bestaande programma's als ze buggy zijn geschreven of onnodig veel geheugen alloceerden die nooit gevuld zal worden.
Maar waarom doet Windows Verkenner dit niet uit zichzelf? Ik kan verschillende redenen bedenken. Ten eerste zijn er tal van plugins die integreren met Windows Verkenner, denk 7zip en Git, die dezelfde assumoties hebben als dat ze twintig jaar geleden hadden. Ten tweede is Verkenner ook gedeeltelijk verantwoordelijk voor de COM shell API, welke door nog veel meer programma's wordt aangeroepen. Als Windows ineens 32k aan data gaat sturen in programma's die een memcpy doen naar 260 bytes in het geheugen dan krijg je een aantal spectaculaire crashes en mogelijk zelfs kwetsbaarheden en exploits. Stel je voor dat je een bestand downloadt dat een buffer overflow triggert in die Winrar-extensie en je computer infecteert zodra je erop rechtsklikt! De beperkingen die ervoor moeten zorgen dat dit goed gaat zitten namelijk aan de kant die geheugen alloceert voor paden, maar met dit soort extensies kom je API's tegen waar Windows dit voor je doet.
Wat je wel kunt doen is de bedrijven of projecten waar je je tooling vandaan haalt op de hoogte brengen van het bestaan van deze functie. De meeste ontwikkelaars zullen niet weten dat het een optie is, namelijk. Verkenner zal nog wel een tijdje geen lange paden aankunnen vanwege alle programma's die erop inhaken, maar alle andere programma's op je systeem kunnen daar dan nog wel mee werken.
Je kunt natuurlijk ook met \\?\C:\ om de beperkingen heen gaan zolang het programma daar mee overweg kan. Op die manier kun je ook andere beperkingen omzeilen (mkdir \\?\C:\con is een mooi voorbeeld daarvan, die map kun je daarna niet zomaar verwijderen)
Voor de mensen die niet weten over de optie om lange paden in te schakelen:
De Windows API kan al een tijdje
zonder MAX_PATH-beperkingen werken maar die wijziging is opt-in:
Starting in Windows 10, version 1607, MAX_PATH limitations have been removed from common Win32 file and directory functions. However, you must opt-in to the new behavior.
Zet het DWORD
Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem\LongPathsEnabled op 1, reboot, en klaar is Kees. Zoals je zegt is group policy ook een optie natuurlijk.