TL; DR:
要約すると、いや、それは必要ではありません。彼らは可能性があり、単一のフォルダを使用している、といや、Windowsの1つの場所または別から実行されているプログラムとは異なっ自体を提示していません。
まあ、誰もがこれについて彼らの意見を投げているようですので、私は私の2¢を投げます。他の人は、 Microsoftが32ビット版と64ビット版のプログラム用に別々のトップレベルのフォルダを作成することを選んだ理由についてすでに推測しているので、その部分は残しておきます(最良の理由は、それがプログラマの利便性)。もちろん、それでも、なぜこれが必要なのかという直接的な質問にはまったく対応していませんか?、これに答えはおそらくです:それはありません。
代わりに、質問の本文を取り上げます
Windowsは、「Program Files(x86)」を使い果たしたプログラムとはどういうわけか、それ自体を異なって提示しますか?
実際はそうではありませんが、プログラムの場所は動作に影響を与える可能性がありますが、あなたが考える方法には影響しません。
プログラムを実行すると、Windowsはそれを実行する環境を設定します(環境変数だけでなく、メモリ、アドレス指定などの点で)。この環境は、実行可能ファイルの内容に依存します(32ビットプログラムと64ビットプログラムは内部的に異なります)。64ビットシステムで32ビットプログラムを実行すると、32ビット環境をエミュレートする32ビットサブシステムで実行されます。これはWoW64と呼ばれ(WoW64はWindows 64ビット上のWindowsを表します)、NTVDMを使用してXPで16ビットアプリを実行する方法に似ています。
管理者権限の有無にかかわらずプログラムを実行すると、実行方法に影響しますが、場所はプログラムに影響しません(たとえば、一部のドライバーのような場所の依存関係の例があります)。
答えながら(他の日、私は別のコンピュータを使用していますので、私は私のステップを後戻りするために私のブラウザの履歴に頼ることはできませんが、このSUの質問私はで終わったこのSO質問に私を引き起こしたGoogleのPROCESSOR_ARCHITEW6432につながり、このSO質問とをこのMicrosoftブログ投稿。
途中のどこかで%processor_architecutre%
、コマンドプロンプトを実行した場所に応じて環境変数が異なる結果を与える方法についてStackOverflowの投稿を読みました(正確な引用符を見つけようとします)。
答えは、コマンドプロンプトの32ビットバージョンと64ビットバージョンのどちらが実行されたSystem32\
か(つまり、またはSysWoW64\
)によるものであることが判明しました。つまり、場所はプログラムの動作に影響を与えるように見えますが、それはWindowsが特別な方法でフォルダを処理するためではなく、プログラムの異なるバージョンがあるためです。
実行可能ファイルの内容が32ビットか64ビットかを指示するため、これは理にかなっています。したがって、同じプログラム(foobar32.exe
およびなどfoobar64.exe
)の32ビットと64ビットの両方のコピーを同じフォルダーに、それらを実行すると、それらは正しくロードされます(64ビットバージョンはネイティブに実行され、32ビットバージョンはWoW64エミュレーションレイヤーで実行されます)。
FreePascalを使用すると、DOSバージョンとWindowsバージョンの両方をインストールでき、同じフォルダーに保存されます%programfiles%\FreePascal
。これは、(実行可能ファイルを保つことによって異なるアーキテクチャを管理し.exe
、.sys
、.dll
、.ovr
など、ソース・ファイル、)これはまた、32ビットとするために行われなかったことを技術的な理由はありませんが、別のフォルダに、など)及び写真のようにリソースファイルを共有しますプログラムの64ビットバージョン。デビッドが言ったように、プログラマーが別々に保たれていると簡単です(つまり、変数を使用して、ファイルのセットが1つしかないように見せることなど)。