(I'll note that on XP, seems that ".lnk" icon overlay has been missing on LFN for some time now - at least since .941, maybe forever?, & is likewise missing in .948.)
Everything uses SHGetFileInfo to get the overlay icon index. This has the 259 character limitation.
3. I think you should allow long paths anyway at the risk of shell extensions crashing
because faulty shell extensions are not a bug of Everything.
This is a bug in Everything, since Everything is ignoring the MAX_PATH limitation with shell calls.
The SHGetFileInfo implicitly states a limit of 260 characters (including null terminator). Some shell extensions expect this limitation as per the API spec and crash when longer paths are passed.
* Are the two (file icons and shell extensions) related somehow?
Yes, SHGetFileInfo will call the associated
IExtractIcon interface (possibly implemented by a shell extension or handled by Windows).
Will the context menu be shown for pathlengths > 259?
For now, always. For the next major release, there might be an option to disable context menus for really long paths, as these too will crash some shell extensions.
* Do you switch to win32 namespace for these paths (\\?\c:\long\path vs. old c:\long\path)
\\?\ paths do not work with the shell, only the base windows API. I've tried shortpaths (eg: C:\longpa~1\... ) and ITEMIDLIST (which is the Windows shell internal path structure) and both still crash shell extensions.
* As the context menu is build by Everything and consists of an Everything-part (Open ... Set Run Count) and a Windows part (the part that you would see in Explorer), wouldn't it be possible to show just the Everything-part PLUS an extra dummy entry "Path too long for context menu" with the default warning icon. And skip the 'Windows-part' altogether?
That might work, a once off "do you want to show really long paths, thumbnails / icons?"
I've also thought about setting a dirty flag when calling the shell, clearing this flag when the call is successful, so I can can detect if the shell crashed the next time Everything is started, perhaps I can notify the user in this case, with the option to enable shell_max_path..
Like Windows Explorer,
Everything 1.4.1.949 now bypasses the 259 character limit (MAX_PATH) by default.
If you have a shell extension causing Everything to crash, you'll need to enforce the max_path limit with the shell_max_path ini option:
To enforce the max_path limit:
- In Everything , type in the following search and press ENTER:
/shell_max_path=1