Em um prompt de comando, obtenho o seguinte:
>echo %ProgramFiles%
C:\Program Files
No entanto, algumas aplicações (PHP, neste caso, embora eu tenha visto o mesmo comportamento no httpd.conf do Apache), são:
>php -r "echo $_ENV['ProgramFiles'];"
C:\Program Files (x86)
Por que é isso?
Antecedentes: estou desenvolvendo scripts que são independentes do SO host de 32 bits ou 64 bits e, para arquivos de configuração, isso funciona muito bem. Em um sistema de 32 bits, %ProgramFiles%
é "C: \ Arquivos de Programas" e em um sistema de 64 bits, o mesmo %ProgramFiles%
aparentemente retorna C:\Program Files (x86)
. Só estou curioso para saber por que o mesmo não se aplica quando tento no prompt de comando do Windows (ou na barra do explorador, etc.). Existe um prompt de comando de 64 bits ou algo assim?
%programfiles%
retornaC:\Program Files
(em uma configuração padrão do Windows). Nas versões x64 do Windows,%programfiles(x86)
retornaC:\Program Files (x86)
. Não sei por que o php está retornando algo contrário a isso, mas você pode facilmente verificar como as variáveis ambientais de um determinado sistema estão definidas executandoset
em um prompt de comando no Windows x64 e no Windows x86.