我们的 32 位应用程序通过 ShellExecute 启动 Windows LNK 文件(Shell 链接)。当它尝试“启动”指向 64 位二进制文件的链接(例如“开始”菜单中的“Internet Explorer(64 位)”快捷方式)时,它总是最终启动 32 位二进制文件。在内部,ShellExecute 错误地解析了链接目标:LNK 内部有一个隐藏字段,其中包含 FOLDERID_ProgramFiles。64 位应用程序将此解析为 64 位程序文件目录,但 32 位应用程序不会。
Wow64DisableWow64FsRedirection 不会改变 ShellExecute 的这种行为。
除了通过 64 位“蹦床”过程(由于我们的插件架构如何工作,这不是一个选项),32 位应用程序是否有任何方法可以像 64 位应用程序一样启动 shell 链接?