プログラムファイルx86環境変数を取得する方法


108

コマンドプロンプトにProgram Files(x86)の場所を表示する方法を教えてください。Windows 7 64ビットを使用しています。

私はもう試した:

echo %programfiles(x86)%およびecho %programfiles%
どちらも表示のみC:\Program Files

レジストリを手動で確認したところ、
HKLM /ソフトウェア/マイクロソフト/ Windowsの/ CurrentVersionの、へのポイントと
programfilesdirC:\Program Files

HKLM / Software / WOW64 / Microsoft / winodws / currentversion
、をprogramfilesdir指していC:\Program Files (x86)ます。

しかし、なぜC:\ Program Filesが常に表示されるのですか?


10
本当の問題は、Windows 7とWindows XPの両方に常にインストールされているプログラムの実行を簡略化するために、常に%86を指すバージョンの%programfiles%がないのでしょうか?たとえば、Windowsのデバッグツール(x86)をXPにインストールすると、Program Filesにありますが、Windows 7ではProgram Files(x86)にあります。つまり、すべてのコンピューターに分散できるコマンドファイルを作成する簡単な方法はありません。組み込みの環境変数はいずれも、一貫してProgram Filesの32ビットの場所を指していません。
dj69 2013年

回答:


178

64ビットモードで実行されている64ビットマシン:

  • echo %programfiles% ==> C:\Program Files
  • echo %programfiles(x86)% ==> C:\Program Files (x86)

32ビット(WOW64)モードで実行されている64ビットマシン:

  • echo %programfiles% ==> C:\Program Files (x86)
  • echo %programfiles(x86)% ==> C:\Program Files (x86)

32ビットモードで実行されている32ビットマシン:

  • echo %programfiles% ==> C:\Program Files
  • echo %programfiles(x86)% ==> %programfiles(x86)%

18
32ビットモードの32ビットマシンで返される%programfiles(x86)%は何ですか?
Ivan Kochurkin 2014年

Windows XP(x86)では機能しません。%programfiles%を配置する必要があります。唯一の方法は、まずOSバージョンをコードでチェックしてから、いずれかの変数を使用することだと思います。
gsubiran 2014

3
上記のリストに%ProgramW6432%を追加する価値があるかもしれません。
Alex Wiese

2
32ビットバージョンのWindows 7にも同じことが当てはまります。%programfiles(x86)%環境変数はありません
badsamaritan

1
@Alex Wieseの2番目、%ProgramW6432%には常に64ビットのプログラムファイルディレクトリがあります。%ProgramFiles(x86)%には、常に32ビットのプログラムファイルディレクトリがあります。これら2つの変数が安定している...他の人がどのようなモード、64ビットOSに依存して変化する(またはコマンドプロンプト)ことで実行されている。
ジェイソン・

35

別の関連する環境変数は次のとおりです。

%ProgramW6432%

したがって、32ビット(WOW64)モードで実行されている64ビットマシンでは:

  • echo%programfiles%==> C:\ Program Files(x86)
  • echo%programfiles(x86)%==> C:\ Program Files(x86)
  • echo%ProgramW6432%==> C:\ Program Files

ウィキペディアから:

%ProgramFiles%変数は、Windowsなどのインストール済みプログラムをすべて格納するProgram Filesディレクトリを指します。英語システムのデフォルトは「C:\ Program Files」です。64ビット版のWindows(XP、2003、Vista)には、%ProgramFiles(x86)%(デフォルトは「C:\ Program Files(x86)」)、および%ProgramW6432%(デフォルトは「C:」)もあります。 \プログラムファイル"。%ProgramFiles%自体は、環境変数を要求するプロセス自体が32ビットか64ビットかによって異なります(これは、Windows-on-Windows 64ビットリダイレクトが原因です)。

リファレンス:http : //en.wikipedia.org/wiki/Environment_variable


3
より良いリファレンス:MSDN:WOW64実装の詳細 -「ProgramW6432およびCommonProgramW6432環境変数は、Windows 7およびWindows Server 2008 R2以降で追加されました。」ウィキペディアはこれと直接矛盾しています。興味深いことに、MSDNによると、Wikipediaにはこの変数をサポートしない 3つのバージョンのみがリストされています。残念ながら、テストする64ビットXP / Vistaはありません。
Lexikos

1
2回目の読み取りで、Windows 7/2008 R2要件が64ビットプロセスにのみ適用されることがわかります。この変数は、Vista x64の32ビットプロセスに対してのみ定義されます。
Lexikos


0

IMHO、この説明で欠落している1つのポイントは、使用する変数が何であれ、常に適切なフォルダーを指すことが保証されていることです。これは、WindowsがC:\以外のドライブにインストールされているまれなケースで重要になります。


これは良いメモです。しかし、質問に直接回答するわけではないので、質問自体へのコメントとしてそれを書くほうがよいでしょう。
AbstractVoid
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.