Windowsの「ProgramFiles(x86)」フォルダと「ProgramFiles」フォルダの違いは何ですか?

Windows PCに「C:\ ProgramFiles」フォルダーと「C:\ ProgramFiles(x86)」フォルダーの両方がある可能性があります。ざっと見てみると、プログラムの一部が1つのフォルダーにインストールされており、一部が別のフォルダーにインストールされていることがわかります。

32ビットと64ビットのWindows

関連:32ビットと64ビットのWindowsの違いは何ですか?

当初、Windowsは32ビットオペレーティングシステムとしてのみ利用可能でした。32ビットバージョンのWindows(現在も利用可能な32ビットバージョンのWindows 10でも)では、「C:\ ProgramFiles」フォルダーのみが表示されます。

このProgramFilesフォルダーは、インストールするプログラムが実行可能ファイル、データ、およびその他のファイルを保存するための推奨される場所です。つまり、プログラムはProgramFilesフォルダーにインストールされます。

64ビットバージョンのWindowsでは、64ビットアプリケーションはProgramFilesフォルダーにインストールされます。ただし、64ビットバージョンのWindowsは32ビットプログラムもサポートしており、Microsoftは32ビットソフトウェアと64ビットソフトウェアが同じ場所で混同されることを望んでいません。そのため、代わりに32ビットプログラムが「C:\ ProgramFiles(x86)」フォルダーにインストールされます。

Windowsは、「Windows64ビット上のWindows32ビット」の略であるWOW64と呼ばれるものを使用して、64ビットバージョンのWindowsで32ビットアプリケーションを実行します。

64ビット版のWindowsで32ビットプログラムを実行すると、WOW64エミュレーションレイヤーはファイルアクセスを「C:\ ProgramFiles」から「C:\ ProgramFiles(x86)」にシームレスにリダイレクトします。32ビットプログラムはProgramFilesディレクトリにアクセスしようとし、Program Files(x86)フォルダを指します。64ビットプログラムは引き続き通常のProgramFilesフォルダーを使用します。

各フォルダに保存されているもの

要約すると、32ビットバージョンのWindowsでは、「C:\ ProgramFiles」フォルダーがあります。これには、インストールされているすべてのプログラムが含まれ、それらはすべて32ビットです。

64ビットバージョンのWindowsでは、64ビットプログラムは「C:\ ProgramFiles」フォルダーに保存され、32ビットプログラムは「C:\ ProgramFiles(x86)」フォルダーに保存されます。

そのため、異なるプログラムが2つのProgram Filesフォルダーに、一見ランダムに分散しています。「C:\ ProgramFiles」フォルダにあるものは64ビットですが、「C:\ ProgramFiles(x86)」フォルダにあるものは32ビットです。

なぜ彼らは分裂するのですか?

これは、古い32ビットプログラム用に設計された互換性機能です。これらの32ビットプログラムは、64ビットバージョンのWindowsが存在することさえ認識していない可能性があるため、Windowsはそれらをその64ビットコードから遠ざけます。

32ビットプログラムは64ビットライブラリ(DLLファイル)を読み込めず、特定のDLLファイルを読み込もうとして、32ビットではなく64ビットを見つけた場合にクラッシュする可能性があります。同じことが64ビットプログラムにも当てはまります。CPUアーキテクチャごとに異なるプログラムファイルを分離しておくと、このようなエラーが発生するのを防ぐことができます。

たとえば、Windowsが単一のProgramFilesフォルダを使用したとしましょう。 32ビットアプリケーションは、C:\ Program Files \ MicrosoftOfficeにあるMicrosoftOffice DLLファイルを探して、ロードしようとする場合があります。ただし、64ビットバージョンのMicrosoft Officeがインストールされている場合、アプリケーションはクラッシュし、正しく機能しません。個別のフォルダーを使用すると、64ビットバージョンのMicrosoft OfficeはC:\ Program Files \ Microsoft Officeにあり、32ビットアプリケーションはCを検索するため、そのアプリケーションはDLLをまったく見つけることができません。 :\ Program Files(x86)\ MicrosoftOffice。

これは、開発者がアプリケーションの32ビットバージョンと64ビットバージョンの両方を作成する場合、特に状況によっては両方を同時にインストールする必要がある場合にも役立ちます。32ビットバージョンはC:\ Program Files(x86)に自動的にインストールされ、64ビットバージョンはC:\ ProgramFilesに自動的にインストールされます。Windowsが単一のフォルダーを使用した場合、アプリケーションの開発者は、64ビットフォルダーを別のフォルダーにインストールして、それらを分離しておく必要があります。そして、開発者が異なるバージョンをインストールする場所についての実際の標準はおそらくないでしょう。

32ビットフォルダに(x86)という名前が付けられているのはなぜですか?

「32ビット」と「64ビット」が常に表示されるとは限りません。代わりに、これら2つの異なるアーキテクチャを指す「x86」と「x64」が表示される場合があります。これは、初期のコンピューターがIntel8086チップを使用していたためです。元のチップは16ビットでしたが、新しいバージョンは32ビットになりました。「x86」は、16ビットか32ビットかに関係なく、64ビットより前のアーキテクチャを指すようになりました。新しい64ビットアーキテクチャは、代わりに「x64」と呼ばれます。

それが「ProgramFiles(x86)」の意味です。これは、古いx86CPUアーキテクチャを使用するプログラム用のProgramFilesフォルダーです。ただし、64ビットバージョンのWindowsでは16ビットコードを実行できないことに注意してください。

これは通常は問題ではありません

関連:WindowsのAppDataフォルダーとは何ですか?

通常、プログラムのファイルがProgramFilesまたはProgramFiles(x86)のどちらに保存されているかは関係ありません。Windowsはプログラムを正しいフォルダに自動的にインストールするので、それについて考える必要はありません。プログラムは[スタート]メニューに表示され、インストールされている場所に関係なく、正常に機能します。32ビットプログラムと64ビットプログラムはどちらも、Program Filesフォルダーではなく、AppDataやProgramDataなどのフォルダーにデータを保存する必要があります。使用するProgramFilesフォルダをプログラムに自動的に決定させるだけです。

ポータブルアプリを使用している場合は、システム上の任意のフォルダーから実行できるため、どこに配置するかを心配する必要はありません。ポータブルアプリをDropboxまたは別の種類のクラウドストレージフォルダーに入れて、すべてのPCで利用できるようにするのが好きです。

プログラムがどこに保存されているかを知る必要がある場合があります。たとえば、Steamディレクトリに移動していくつかのファイルをバックアップするとします。Steamは32ビットプログラムであるため、C:\ Program Files(x86)にあります。

インストールしたプログラムが64ビットであるかどうかわからず、そのインストールフォルダーを探している場合は、両方のProgramFilesフォルダーを調べて見つける必要があります。

Windows10のタスクマネージャーで確認することもできます。

64ビットバージョンのWindowsでは、32ビットプログラムは追加の「(32ビット)」テキストでタグ付けされ、C:\ Program Files(x86)にあることを示します。