Jimesh
Jimesh

Reputation: 113

Accessing target path from a shortcut file on a 64 bit system using 32 bit application

I'm trying to access the target path from a shortcut(.lnk) file on a 64bit machine using my 32 bit application. To get the path, I was using the following code.

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

This returns the path C:\Program Files (X86)\.. instead of C:\Program Files\..

Is there any work around for this?

Upvotes: 5

Views: 1849

Answers (3)

Boost3d1
Boost3d1

Reputation: 1

For anyone still having this issue, I found that leaving the Platform Target set to "Any CPU" and unticking the option "Prefer 32-bit" fixed it for me. This way your application will maintain the flexibility of being compatible with both architectures, and still return the shortcut link TargetPath (either x86 / x64) correctly.

Upvotes: 0

Erik A. Brandstadmoen
Erik A. Brandstadmoen

Reputation: 10588

This is a general problem in Windows. Try editing a file in a System32 folder (e.g. applicationHost.config) with a 32-bit editor. You will be editing the file from the SysWOW64 folder instead... It's more than strange...

Upvotes: 0

Jimesh
Jimesh

Reputation: 113

A trick to be used is to

  1. Get the file name from link.TargetPath
  2. Get the working directory from link.WorkingDirectory
  3. Append path

Upvotes: 2

Related Questions