Windows 7がProgram Files(x86)フォルダーに64ビットアプリをインストールするのはなぜですか?動作を変更できますか?


12

CTP以来、Windows 7の64ビットバージョンを使用しており、C:\Program Files (x86)フォルダーにインストールされるアプリケーションでいくつかの問題に遭遇しました。とにかく2つの別々のプログラムファイルディレクトリを持つ目的は何ですか?

私がインストールしたプログラムはすべてC:\Program Files (x86)フォルダーに入れられました。アプリが32ビットであるか64ビットであるかは問題ではないようです。64ビットアプリが配置されないのはなぜC:\Program Filesですか?

C:\Program Files代わりにデフォルトを変更する方法はありますか?私がすべてを入れるだけで何かがめちゃくちゃになるC:\Program Filesでしょうか?

64ビットアプリ用に個別のフォルダーを作成することに何らかのメリットがある場合C:\Program Files、x86アプリで使用C:\Program Files (x64)し、新しい64ビットアプリ用の新しいフォルダーを作成する方が賢明なデフォルトと思われます。これは、後方互換性の維持に役立ちます。私はソフトウェア開発者として働いており、私のプロジェクトのいくつかにはのライブラリへのパス参照が含まれていますC:\Program Files。これらの参照は、それらを配置したWindows 7マシン上で壊れていますC:\Program Files (x86)。インストーラーのターゲットの場所をに変更しようとさえしましたがC:\Program Files、それは無視され、アプリはC:\Program Files (x86)とにかく入りました。

これは、32ビットと64ビットのマシン間でソースコードを共有する必要があり、異なるマシンでこれらのライブラリへのパスを異なるように設定する構成ファイルを台無しにする必要がないため、非常にイライラします。

環境変数に関する編集:(簡単にするために、変数のデフォルトの英語値のみを使用します。)64ビットマシンで%ProgramFiles%C:\Program Files、新しい変数%ProgramFiles(x86)%はになりますC:\Program Files (x86)。そのため、インストール先のフォルダーパスを見つける必要がある32ビットプログラムがある場合は、32ビットまたは64ビットバージョンのWindowsで実行されているかどうかを確認する必要があります。使用する環境変数を知るため。この考慮なしで作成された32ビットアプリは、64ビットマシンで正常に動作するために更新する必要があります。そのため、環境変数を使用しても、後方互換性は失われます。

また、%ProgramFiles(x86)%32ビットバージョンのWindowsには存在しません。その場合、32ビットアプリは常にその環境変数を使用でき、実行しているOSに基づいた条件付きロジックを必要としません。


6
これらのアプリは確かに64ビットであると確信していますか?ほとんどの場合、64ビットと互換性のあるプログラムですが、実際には32ビットアプリケーションです。
ジョンT

%ProgramFiles%環境変数を使用するとこれを解決できたのだろうか。x86 / 64bitの違いをどのように処理するかわかりません。
ceejayoz 09

回答:


7

この理由は、多くの古いインストーラーが新しいファイル構造を理解せず、標準プログラムファイルディレクトリ内のすべてを調べるか、そこにコピーされているいくつかの32ビットコンポーネントを持つスマートプログラムを見ているためです。

最善の策は、x64 Winrarなどの新しいプログラムをダウンロードし、インストール先を確認して、マシンの問題を除外することです。

混乱させることについて-それはできますが、実際にはプログラムに依存しますが、すべてに当てはまる答えはありません...いくつかのファイルだけでいくつかのより小さくてコンパクトなプログラムは問題ありません。 、Adobeまたはその他の「スイート」または大規模なプログラムは、クロスアーキテクチャである多くの共有コンポーネントを持っているため、ほとんどの場合失敗します。


それで、なぜマイクロソフトは「C:\ Program Files」を32ビットアプリの場所にしないので、古いインストーラーが問題を起こさないようにしたのです。また、私は分離が必要な理由を本当に理解していません。なぜすべてが「C:\ Program Files」に入れないのですか?
CoderDennis

両方ができないのは、一部のアプリケーション(特に共有コンポーネントを使用するアプリケーション)が32ビットと64ビットで同じ名前のファイルを持っているためです。なぜこのようになっているのか-私にはわからないが、おそらく誰かがその時点で非常に正当な理由を持っていて、それは単に「やるべきこと」として立ち往生している。
ウィリアムヒルサム

4

カスタムインストールではプログラムを他のボリューム(D:など)にインストールでき、国際的なインストールではデフォルトで他のフォルダーを使用できることが多いため、%ProgramFiles%(またはCSIDL_PROGRAM_FILES、またはEnvironment.GetFolderPath(Environment.SpecialFolder.ProgramFiles)

  • スペイン語版Windows: C:\Archivos de Programa
  • フランス語版Windows: C:\Programmes
  • ドイツ語版のWindows: C:\Programme
  • スウェーデンのWindows: C:\Program


シンプルにするために、元の質問では環境変数については言及しませんでした。使用方法%ProgramFiles%が問題の原因であるかどうかを指摘する編集を追加しました。
-CoderDennis

3

Windows 7の64ビットバージョンでは(これは他の新しいOSバージョンにも当てはまる場合がありますが、Win 7 64ビットでのみ確認できます)、%ProgramFiles%の親の場所に違いがあることに注意してくださいエクスプローラーおよびDOSで。

Windows 7では、%ProgramFiles%(および関連する%ProgramFiles(x86)%environemnt変数)の実際の物理フォルダーの場所は英語版に従って修正されています。すなわち、「C:\ Program Files」および「C:\ Program Files(x86)」に関しては、それぞれ適切にローカライズさたエクスプローラーに表示されます。

特定の例を提供するには; あなたはエクスプローラを開き、システムドライブ(通常はC :)を見ると、スウェーデンのWindows 7 64ビットのインストールに、あなたは「を参照してくださいプログラム」および「プログラム(x86の)」フォルダーを。アドレスバーに%ProgramFiles%を入力すると、「C:\ Program」に移動します。

ただし、DOSボックスを開いてSETと入力すると、%ProgramFiles%の実際の値は「C:\ Program」フォルダーではなく「C:\ Program Files」であることがわかります。CDおよびDIRをさらに調べると、物理的に「C:\ Program Files」であることがわかります

道徳は、APIを介して環境変数またはプログラムを使用する場合はすべて機能しますが、ファイルシステムを探索するときはこの微妙な変更に注意してください!


ポーランド語版では、「Program Files(x86)」は「Plikiprogramów(x86)」ですが、「Program Files」は…「Program Files」です。ポーランド語には奇妙な文法があります。また、DOSボックスと呼ばないでください。DOSはありません。
kinokijuf
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.