2


0

32ビットプログラムのある64ビットVistaマシンにファイルが存在するかどうかを確認する

したがって、ファイルが存在するかどうかを確認する必要がある32ビットプログラムがあります。 ただし、場所(ショートカットとレジストリの両方から取得できる)は、多くの場合、環境文字列を使用します。 ExpandEnvironmentStrings apiを使用してそれらを展開し、ファイルが存在するかどうかを確認します。 ただし、32ビットアプリケーションであるため(http://msdn.microsoft.com/en-us/library/aa384274(VS.85).aspx [環境文字列エミュレーション]に注意)、パスは間違った場所に展開されます。場合によっては場所。 与えられたパスが32ビットか64ビットかわからないので、1つの簡単な解決策は、64ビットの場所と32ビットの場所の両方を手動で使用して、関連する環境文字列(ProgramFilesおよびCommonProgramFiles)を拡張することです。 ただし、これは少しハックを感じます。 もっと良い方法はありますか?

1 Answer


2


おそらくhttp://msdn.microsoft.com/en-us/library/aa384187(VS.85).aspx[File System Redirector]が役立つでしょう。 特に、Wow64DisableWow64FsRedirection関数とそこに記載されている親しい友人を参照してください。

それでも、展開する必要のある文字列と、32ビットまたは64ビットのどちらを展開するかを決定するために、おそらくいくつかのチェックを行う必要があります。 そのためには、文字列の単純なテーブルは役に立たないと思います。 あなたが言うように、%ProgramFiles%は、場合によっては32ビットパスを意味し、その他の場合は64ビットパスを意味する場合があります。