現象
64 ビット版 Windows 上で動作している 32 ビット アプリケーションから IShellLink インターフェイスの GetPath メソッドを使用して、ショートカット ファイルからリンク先のパスを取得することを想定します。
この時、ショートカット ファイルからリンクされた実行ファイルが C:\Program Files ディレクトリ以下にある 64 ビット アプリケーションの場合、取得されるリンク先のパスには C:\Program Files ではなく C:\Program Files (x86) が含まれます。
原因
32 ビット アプリケーションから、C:\Program Files ディレクトリ以下に配置される 64 ビット アプリケーションのリンク先のパスを取得することはできません。
解決方法
C:\Program Files 配下にある 64 ビット アプリケーションのリンク先のパスを取得する際は、64 ビット アプリケーションから IShellLink インターフェイスの GetPath メソッドを実行する必要があります。
状況
32 ビット アプリケーションから 64 ビット アプリケーションのリンク先のパスを取得できない現象は、OS の仕様に基づく動作です。