首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从WOW64启动外壳链接(LNK)

从WOW64启动外壳链接(LNK)
EN

Stack Overflow用户
提问于 2008-12-22 16:45:30
回答 4查看 1.7K关注 0票数 3

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

Wow64DisableWow64FsRedirection不会更改ShellExecute的此行为。

除了经历64位的"trampoline“过程(由于我们的插件架构的工作方式,这不是一个选项),32位应用程序有没有办法像64位应用程序一样启动shell链接?

EN

回答 4

Stack Overflow用户

发布于 2010-09-02 09:44:25

安德鲁:我试过了,sysnative文件夹不能做任何Wow64DisableWow64FsRedirection不能做的事情。问题是ShellExecute错误地假设链接指向%programfiles(x86)%,而实际上它指向%programfiles% (即使在%programfiles(X86)%中没有这样的文件)。

打开64位程序已经运行得很好了。问题出在指向%programfiles%目录的.lnk文件。

票数 1
EN

Stack Overflow用户

发布于 2008-12-23 16:18:40

阅读this article from Raymond Chen我不认为你所要求的是可能的。我仍然会考虑做一个小的"trampoline“应用程序,他唯一的工作就是启动给定的应用程序/链接,然后编译一个不同的应用程序在32位和64位系统上使用。或者构建两个版本的应用程序,32位和64位版本。

票数 0
EN

Stack Overflow用户

发布于 2009-04-15 00:07:06

您可以派生一个调用LNK的explorer.exe进程。

有没有什么特别的原因你不能把你的程序编译成64位的应用程序?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/386715

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档