使用32位应用程序从64位系统上的快捷方式文件访问目标路径

5

我正在尝试在64位计算机上使用32位应用程序从快捷方式(.lnk)文件中访问目标路径。为了获取路径,我使用了以下代码。

WshShell shell = new WshShell();
IWshShortcut link = (IWshShortcut)shell.CreateShortcut(flexShortcut);
FLEXEXE = link.TargetPath;

当使用C:\Program Files\..时,它会返回路径C:\Program Files (X86)\..。是否有解决方法?


2
由于您的应用程序为32位,我认为它将始终以这种方式返回。 - V4Vendetta
1
请查看此链接:https://dev59.com/i3E95IYBdhLWcg3wf-AF - V4Vendetta
您正在创建一个快捷方式。设置TargetPath由您决定。请发布实际重现问题的代码。 - Hans Passant
1
啊,好的。嗯,痛苦啊,Wow64DisableWow64FsRedirection() 不能解决这个问题。将平台目标设置为 AnyCPU 肯定可以解决。 - Hans Passant
1
我尝试将平台目标设置为 AnyCPU。但它并没有解决问题... - Jimesh
显示剩余2条评论
3个回答

2
一个可以使用的技巧是:
  1. 从 link.TargetPath 中获取文件名
  2. 从 link.WorkingDirectory 中获取工作目录
  3. 追加路径

0

这是Windows中的一个普遍问题。尝试使用32位编辑器编辑System32文件夹中的文件(例如applicationHost.config)。您将从SysWOW64文件夹中编辑该文件... 这超出了奇怪的范畴...


0

对于仍然遇到此问题的人,我发现将平台目标设置为“Any CPU”,并取消选中“优先选择32位”选项可以解决这个问题。这样您的应用程序将保持灵活性,兼容两种体系结构,并正确返回快捷方式链接TargetPath(x86 / x64)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接