https://bugs.winehq.org/show_bug.cgi?id=55405
Bernhard Übelacker bernhardu@mailbox.org changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |bernhardu@mailbox.org
--- Comment #1 from Bernhard Übelacker bernhardu@mailbox.org --- Bug #42149 is also about FreeCommander might be related to this one.
Tested with this version: 8ef975dec9aaa3d801c656be1c1c4547 FreeCommanderXE-32-public_setup.zip
FreeCommander is a Delphi application, a crash dialog received during testing showed this: compiled with : Delphi 10.4 Sydney
The issue could be related to this logging: 0118:trace:shell:SHGetKnownFolderIDList {b4bfcc3a-db2c-424c-b029-7fe99a87c641}, 0x00001000, 00000000, 0221FE88 0118:fixme:shell:SHGetKnownFolderIDList unsupported flags: 0x00001000
This flag is: KF_FLAG_NO_ALIAS And the GUID is: FOLDERID_Desktop
Further I think this is also related to bug #27559. Based on comment https://bugs.winehq.org/show_bug.cgi?id=27559#c24 I found below modification makes FreeCommander start without crash. That way the returned pidl should contain the expected path.
(However the listview stays empty, might be #54878, gets drawn with windows version set to 8.)
--- a/dlls/shell32/shellpath.c +++ b/dlls/shell32/shellpath.c @@ -4593,7 +4593,7 @@ HRESULT WINAPI SHGetKnownFolderIDList(REFKNOWNFOLDERID rfid, DWORD flags, HANDLE FIXME("user token is not used.\n");
*pidl = NULL; - if (IsEqualIID(rfid, &FOLDERID_Desktop)) + if (IsEqualIID(rfid, &FOLDERID_Desktop) && !(flags & KF_FLAG_NO_ALIAS)) *pidl = _ILCreateDesktop(); else if (IsEqualIID(rfid, &FOLDERID_RecycleBinFolder)) *pidl = _ILCreateBitBucket();