TL;DR:
Para resumir, no, no es necesario; se podría haber usado una sola carpeta, y no, Windows no se presenta de manera diferente a un programa que está en ejecución desde una ubicación u otra.
Bueno, todo el mundo parece estar lanzando en sus opiniones acerca de esto, así que me voy a tirar en mi 2¢. Otros ya han conjeturado sobre las razones de por qué Microsoft decidió crear diferentes carpetas de nivel superior para 32-bit y 64-bit versiones de los programas, así que voy a dejar esa parte (la mejor razón fue la de David explicación de que es como una conveniencia para los programadores). Por supuesto, incluso entonces, no muy a la dirección de la pregunta directa ¿por qué esto es incluso necesario?, para que la respuesta es de suponer: no.
En su lugar, voy a abordar el cuerpo principal de la pregunta
Hace Windows de alguna manera se presenta de manera diferente a un programa que se ejecuta fuera de "Archivos de Programa (x86)"?
En realidad no, pero la ubicación del programa pueden afectar el comportamiento, pero no en la forma en que usted piensa.
Cuando se ejecuta un programa, Windows crea un entorno en el que lo ejecute (me refiero en términos de memoria, direccionamiento, etc., no sólo las variables de entorno). Este entorno depende del contenido del archivo ejecutable (32-bit y 64-bit programas se diferencian internamente). Cuando se ejecuta un programa de 32 bits en un sistema de 64 bits, que se ejecuta en el subsistema de 32 bits que emula un entorno de 32 bits. Se llama WoW64 (WoW64 stands para Windows en Windows de 64 bits) y es similar al modo de 16 bits, las aplicaciones se ejecutan en windows XP utilizando el NTVDM.
Cuando se ejecuta un programa con o sin privilegios de administrador, que afecta la forma en que se ejecuta, pero la ubicación debe no la afectan (aunque hay algunos ejemplos de ubicación de la dependencia como algunos conductores, por ejemplo).
(Estoy usando un equipo diferente, por lo que no puedo confiar en mi historial del navegador para desandar mis pasos, pero el otro día al responder a esta SU pregunta , terminé en este ASÍ que la pregunta que me hizo Google PROCESSOR_ARCHITEW6432 que conducen a este MODO de pregunta y este blog de Microsoft publicación.)
En algún lugar a lo largo del camino, he leído un StackOverflow post acerca de cómo la envirnoment variable %processor_architecutre%
da resultados diferentes dependiendo del lugar donde se ejecute el símbolo de (voy a tratar de encontrar la cita exacta.).
La respuesta resultó ser debido si el de 32 bits o de 64 bits versión de el símbolo del sistema se ejecuta (es decir, de System32\
o SysWoW64\
). En otras palabras, mientras que la ubicación parece afectar el comportamiento del programa, es sólo porque hay diferentes versiones del programa, no porque Windows trata la carpeta de una manera especial.
Esto tiene sentido porque el archivo ejecutable del contenido dictan si es de 32 bits o de 64 bits, por lo que podría poner una de 32 bits y de 64 bits copia del mismo programa (por ejemplo, foobar32.exe
y foobar64.exe
) en la misma carpeta y al ejecutarlos, que va a ser cargado correctamente (la versión de 64 bits se ejecutan de forma nativa y la de 32 bits se ejecutan en el WoW64 capa de emulación).
FreePascal permite instalar DOS y versiones de Windows y que van en la misma carpeta: %programfiles%\FreePascal
. Gestiona las diferentes arquitecturas por mantener los archivos ejecutables (.exe
, .sys
, .dll
, .ovr
, etc.) en carpetas separadas y recurso para compartir archivos como fotos, la fuente de los archivos, etc.) No hay ninguna razón técnica que esto no podría realizarse también de 32 - y 64-bit versiones de un programa. Como dijo David, es simplemente más fácil para el programador si están separados (es decir, uso de variables para hacer que parezca que sólo hay un conjunto de archivos, etc.)