Desde un símbolo del sistema, obtengo lo siguiente:
>echo %ProgramFiles%
C:\Program Files
Sin embargo, algunas aplicaciones (PHP en este caso, aunque he visto el mismo comportamiento desde dentro de httpd.conf de Apache), es:
>php -r "echo $_ENV['ProgramFiles'];"
C:\Program Files (x86)
¿Por qué es esto?
Antecedentes: estoy desarrollando scripts que son independientes de que el sistema operativo host sea de 32 bits o 64 bits, y para los archivos de configuración esto funciona muy bien. En un sistema de 32 bits, %ProgramFiles%
es "C: \ Archivos de programa", y en un sistema de 64 bits que %ProgramFiles%
aparentemente regresa C:\Program Files (x86)
. Tengo curiosidad por saber por qué no ocurre lo mismo cuando lo intento desde el símbolo del sistema de Windows (o en la barra del explorador, etc.). ¿Hay un símbolo del sistema de 64 bits o algo así?
%programfiles%
retornosC:\Program Files
(en una configuración predeterminada de Windows). En las versiones x64 de Windows,%programfiles(x86)
regresaC:\Program Files (x86)
. No estoy seguro de por qué php está devolviendo algo contrario a eso, pero puede verificar fácilmente en qué están configuradas las variables ambientales para un sistema determinado al ejecutarset
desde un símbolo del sistema en x64 Windows y x86 Windows.