Хорошо, небольшой пример, демонстрирующий проблему.
Я вызываю ShellExecute со следующими параметрами:
ShellExecute(Handle, 'open', 'C:\Users\...\Internet Explorer (64-bit).lnk', nil, nil, SW_SHOWNORMAL);
Цель Internet Explorer (64-разрядная версия). Lnk :
C:\Program Files\Internet Explorer\iexplore.exe
Однако 32-разрядная версия iexplore.exe , тем не менее, открыта. В этом случае путь даже не использует % ProgramFiles% , поэтому ShellExecute
будет переводить C: \ Program Files в C: \ Program Files (x86) внутренне. Я понятия не имею, как заставить его открыть 64-битную версию iexplore.exe вместо этого.
Другая проблема, после вызова Wow64DisableWow64FsRedirection
, ShellExecute
больше не будет открывать папки.