我们的32位应用程序通过ShellExecute启动Windows LNK文件(Shell链接)。当它尝试“启动”到64位二进制文​​件的链接(例如“开始”菜单中的“Internet Explorer(64位)”快捷方式)时,它总是以启动32位二进制文​​件结束。在内部,ShellExecute错误地解析了链接目标:LNK中有一个隐藏字段,其中包含FOLDERID_ProgramFiles。 64位应用程序可将其解析到64位程序文件目录,而32位应用程序则不会。

Wow64DisableWow64FsRedirection不会更改ShellExecute的此行为。

除了要经过64位的“蹦床”过程(由于我们的插件体系结构的工作方式,这不是一个选择)之外,32位应用程序是否可以完全像64位应用程序那样启动 shell 链接?

最佳答案

安德鲁:我试了一下,sysnative文件夹不执行Wow64DisableWow64FsRedirection尚未执行的任何操作。问题是,ShellExecute错误地假设链接实际上指向%programfiles(x86)%(即使%programfiles(x86)%中没有此类文件)也指向该链接。

打开64位程序已经可以正常工作了。指向问题所在的.lnk文件指向%programfiles%目录。

关于windows - 从WOW64启动Shell链接(LINK),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/386715/

10-12 18:20
查看更多