コマンドプロンプトから、以下を取得します。
>echo %ProgramFiles%
C:\Program Files
ただし、一部のアプリケーション(この例ではPHPですが、Apacheのhttpd.conf内から同じ動作が見られます)は次のとおりです。
>php -r "echo $_ENV['ProgramFiles'];"
C:\Program Files (x86)
どうしてこれなの?
背景:私は、ホストOSが32ビットまたは64ビットであることを認識しないスクリプトを開発しています。構成ファイルの場合、これはうまく機能します。32ビットシステムで%ProgramFiles%は "C:\ Program Files"であり、64ビットシステムでは同じ%ProgramFiles%ように見えますC:\Program Files (x86)。Windowsのコマンドプロンプト(またはエクスプローラーバーなど)から試しても同じことが当てはまらないのはなぜですか。64ビットのコマンドプロンプトなどはありますか?
%programfiles%戻りますC:\Program Files。x64バージョンのWindowsでは、を%programfiles(x86)返しますC:\Program Files (x86)。phpがなぜそれとは逆の結果を返すのかはわかりませんがset、x64 Windowsおよびx86 Windowsのコマンドプロンプトから実行することで、特定のシステムの環境変数が何に設定されているかを簡単に確認できます。