After a few months of this, and opening a Microsoft trouble ticket, I found the issue and the solution:
The registry change is not the way to enable long paths with windows 11. Use the GPEDIT technique you described:
Group Policy: System "Configuration>Administrative Templates>System>Filesystem>Enable Win32 long paths" enabled.
The above also sets that registry key too, so you only need to do the Group policy change. This gives you as much long path support that Win10 had/has. With one exception: ISE PowerShell. Even though Win11 has a long path enabled manifest for the ISE PowerShell EXE, it does not appear to honor it. No idea why it doesn't work, but ISE is now being phased out, so probably not a good plan to use that console any more.
Win10 and Win11 do have their limitations regarding long path names:
- filenames are limited to 256 bytes (and yes, some unicode chars count as multiple bytes
- folder names are limited to 256 bytes.
- If you do the math, and you want a 32K long path, that's at least 128 deep folder structure. I've made a few of these on my win11 box and it's not pretty. You'll run into all sorts of issues with explorer and the command console. These issues are common to both Win10 and Win11, so Windows 11 is just as good at long paths as Windows 10. (except the ISE console)
I ported my application to use long paths and it works great on Win10 and Win11. I had to switch command line parameters to response files because the command line is also limited to 32K bytes. (i.e. can't pass a long filename AND parameters, 2 long filenames are right out!). The Win32 APIs that support 32K path names are very limited and do require you use UNC and unicode versions of the names.
Microsoft have a long way to go with regard to proper support of long filenames. I'd like to see the 256 byte limitations above removed, and command line length increased by at 10X or more. Obviously explorer.exe needs to support long names (but, attempting to display a 32K filename on a single screen is rather challenging - and virtually impossible to use within the debugger (since strings are typically only allowed a single line).