【问题标题】:Accessing target path from a shortcut file on a 64 bit system using 32 bit application使用 32 位应用程序从 64 位系统上的快捷方式文件访问目标路径
【发布时间】:2011-10-30 12:56:21
【问题描述】:

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

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

这将返回路径 C:\Program Files (X86)\.. 而不是 C:\Program Files\..

有什么解决办法吗?

【问题讨论】:

  • 由于您的应用是 32 位的,我认为它总是会以这种方式返回
  • 谢谢,但是更改构建平台不起作用。我希望解决方法,因为快捷方式指向 C:\Program Files\...中的 64 位应用程序...
  • 啊,好吧。嗯,很痛苦,Wow64DisableWow64FsRedirection() 不能解决这个问题。将平台目标设置为 AnyCPU 确实可以。
  • 我尝试将平台目标设置为 AnyCPU。它还没有解决问题...

标签: c# 64-bit 32-bit lnk


【解决方案1】:

要使用的技巧是

  1. 从link.TargetPath获取文件名
  2. 从 link.WorkingDirectory 获取工作目录
  3. 附加路径

【讨论】:

    【解决方案2】:

    这是 Windows 中的一般问题。尝试使用 32 位编辑器编辑 System32 文件夹中的文件(例如 applicationHost.config)。您将改为编辑 SysWOW64 文件夹中的文件...这很奇怪...

    【讨论】:

      【解决方案3】:

      对于仍然遇到此问题的任何人,我发现将平台目标设置为“任何 CPU”并取消选中“首选 32 位”选项为我修复了它。这样,您的应用程序将保持与两种架构兼容的灵活性,并且仍然正确返回快捷链接 TargetPath(x86 / x64)。

      【讨论】:

        猜你喜欢
        • 2013-10-31
        • 1970-01-01
        • 2011-07-07
        • 1970-01-01
        • 1970-01-01
        • 2012-09-01
        • 1970-01-01
        • 2016-05-29
        • 1970-01-01
        相关资源
        最近更新 更多