TL; DR:
Para resumir, no, no es necesario ; que podrían haber utilizado una sola carpeta, y no, de Windows no se presenta de manera diferente a un programa que se ejecute de un lugar u otro.
Bueno, todo el mundo parece estar dando sus opiniones sobre esto, así que arrojaré mis 2 ¢. Otros ya han conjeturado sobre las razones por las cuales Microsoft eligió crear carpetas de nivel superior separadas para las versiones de programas de 32 bits y 64 bits, por lo que dejaré esa parte (la mejor razón fue la explicación de David de que es como un conveniencia para programadores). Por supuesto, incluso entonces, no aborda la pregunta directa ¿ por qué es esto necesario? , a lo que la respuesta es presumiblemente: no lo es .
En cambio, abordaré el cuerpo principal de la pregunta
¿Windows se presenta de alguna manera diferente a un programa que se está quedando sin "Archivos de programa (x86)"?
En realidad no, pero la ubicación del programa puede afectar el comportamiento, pero no en la forma en que pensarías.
Cuando ejecuta un programa, Windows configura un entorno en el que ejecutarlo (es decir, en términos de memoria, direccionamiento, etc., no solo variables de entorno). Este entorno depende del contenido del ejecutable (los programas de 32 y 64 bits difieren internamente). Cuando ejecuta un programa de 32 bits en un sistema de 64 bits, se ejecuta en el subsistema de 32 bits que emula un entorno de 32 bits. Se llama WoW64 (WoW64 significa Windows en Windows de 64 bits ) y es similar a cómo se ejecutarían las aplicaciones de 16 bits en XP utilizando el NTVDM .
Cuando ejecuta un programa con o sin privilegios de administrador, afecta cómo se ejecuta, pero la ubicación no debería afectarlo (aunque hay algunos ejemplos de dependencia de la ubicación, como algunos controladores, por ejemplo).
(Estoy usando una computadora diferente, por lo que no puedo confiar en el historial de mi navegador para dar marcha atrás a mis pasos, pero el otro día, mientras respondía esta pregunta SU , terminé en esta pregunta SO que me llevó a Google PROCESSOR_ARCHITEW6432 que me llevó a esta pregunta SO y esta publicación de blog de Microsoft ).
En algún momento, leí una publicación de StackOverflow sobre cómo la variable de entorno %processor_architecutre%
da resultados diferentes dependiendo de dónde ejecute el símbolo del sistema (intentaré encontrar la cita exacta).
La respuesta se debió a si se ejecutó la versión de 32 bits o de 64 bits del símbolo del sistema (es decir, desde System32\
o SysWoW64\
). En otras palabras, aunque la ubicación parece afectar el comportamiento del programa, es solo porque hay diferentes versiones del programa, no porque Windows trata la carpeta de una manera especial.
Esto tiene sentido porque el contenido del archivo ejecutable dicta si es de 32 bits o de 64 bits, por lo que puede colocar una copia de 32 bits y de 64 bits del mismo programa (por ejemplo, foobar32.exe
y foobar64.exe
) en la misma carpeta y cuando ejecútelos, se cargarán correctamente (la versión de 64 bits se ejecutará de forma nativa y la de 32 bits se ejecutará en la capa de emulación WoW64).
FreePascal le permite instalar las versiones DOS y Windows y van en la misma carpeta: %programfiles%\FreePascal
. Gestiona los diferentes arquitecturas, manteniendo los archivos ejecutables ( .exe
, .sys
, .dll
, .ovr
, etc.) en carpetas separadas y compartir archivos de recursos como imágenes, archivos de código-, etc.) No hay razón técnica que esto no podría también ser hecho por 32 y Versiones de 64 bits de un programa. Como dijo David, es más fácil para el programador si se mantienen separados (es decir, utilizando variables para que parezca que solo hay un conjunto de archivos, etc.)