¿Por qué Windows de 64 bits necesita una carpeta separada "Archivos de programa (x86)"?

Pregunta:

Sé que en una versión de Windows de 64 bits, la carpeta "Archivos de programa" es para programas de 64 bits y la carpeta "Archivos de programa (x86)" es para programas de 32 bits, pero ¿por qué es necesario?

Por "necesario", no me refiero a "¿por qué Microsoft no pudo haber tomado ninguna otra decisión de diseño?" porque, por supuesto, podrían haberlo hecho. Más bien, quiero decir, "¿por qué, dado el diseño actual de Windows de 64 bits, los programas de 32 bits deben tener una carpeta de nivel superior separada de los programas de 64 bits?" Dicho de otra manera, "¿qué saldría mal si de alguna manera evitara el mecanismo de redirección y obligara a que todo se instalara en el C:\Program Files\ real?"

Hay muchas preguntas sobre Superusuario y en otros lugares que afirman que "una es para programas de 32 bits, la otra es para programas de 64 bits", pero ninguna que pueda encontrar da la razón. Desde mi experiencia, no parece importar si un programa de 32 bits está instalado en el lugar correcto o no.

¿Windows se presenta de alguna manera de manera diferente a un programa que se está quedando sin "Archivos de programa (x86)"? ¿Existe una descripción que muestre exactamente qué es diferente para un programa instalado en "Archivos de programa (x86)" en lugar de "Archivos de programa"? Creo que es poco probable que Microsoft introduzca una nueva carpeta sin una razón técnica legítima.

Respuesta:

Respuesta corta: para garantizar que las aplicaciones heredadas de 32 bits continúen funcionando de la misma manera que solían hacerlo sin imponer reglas desagradables en las aplicaciones de 64 bits que crearían un desastre permanente.

No es necesario. Es más conveniente que otras posibles soluciones, como requerir que cada aplicación cree su propia forma de separar archivos DLL y ejecutables de 32 bits de archivos DLL y ejecutables de 64 bits.

La razón principal es hacer que las aplicaciones de 32 bits que ni siquiera saben que existen los sistemas de 64 bits "simplemente funcionan", incluso si las DLL de 64 bits están instaladas en los lugares donde podrían verse las aplicaciones. Una aplicación de 32 bits no podrá cargar una DLL de 64 bits, por lo que se necesitaba un método para garantizar que una aplicación de 32 bits (que podría ser anterior a los sistemas de 64 bits y, por lo tanto, no tiene idea de los archivos de 64 bits incluso existir) no encontraría una DLL de 64 bits, intentaría cargarla, fallaría y luego generaría un mensaje de error.

La solución más simple para esto son directorios separados consistentemente. Realmente, la única alternativa es requerir que cada aplicación de 64 bits "oculte" sus archivos ejecutables en algún lugar donde no se vería una aplicación de 32 bits, como un directorio bin64 dentro de esa aplicación. Pero eso impondría una fealdad permanente en los sistemas de 64 bits solo para admitir aplicaciones heredadas.

Leave a Comment

Your email address will not be published. Required fields are marked *

web tasarım