32ビットアプリケーションは、ShellExecuteを介してWindows LNKファイル(シェルリンク)を起動します。64ビットバイナリ([スタート]メニューの[Internet Explorer(64ビット)]ショートカットなど)へのリンクを「起動」しようとすると、常に32ビットバイナリが起動することになります。内部的に、ShellExecuteはリンクターゲットを誤って解決します。LNK内にFOLDERID_ProgramFilesを保持する隠しフィールドがあります。64ビットアプリはこれを64ビットプログラムファイルディレクトリに解決しますが、32ビットアプリは解決しません。
Wow64DisableWow64FsRedirectionは、ShellExecuteのこの動作を変更しません。
64ビットの「トランポリン」プロセス(プラグインアーキテクチャの仕組みによりオプションではありません)を実行する以外に、32ビットアプリが64ビットアプリとまったく同じようにシェルリンクを起動する方法はありますか?