sirve que para instalar descargar carpeta archivos 32bit dll 32bit-64bit system32 syswow64

que - ¿Por qué las DLL de 64 bits van a System32 y las DLL de 32 bits a SysWoW64 en Windows de 64 bits?



syswow64 windows 7 32bit (4)

Creo que la intención era cambiar el nombre de System32, pero tantas aplicaciones codificadas para esa ruta, que no fue posible eliminarlo.

SysWoW64 no fue diseñado para las dlls de sistemas de 64 bits, en realidad es algo como "Windows en Windows64", es decir, los bits que necesita para ejecutar aplicaciones de 32 bits en una ventana de 64 bits.

Este artículo explica un poco:

"Windows x64 tiene un directorio System32 que contiene DLL de 64 bits (¡sic!). Por lo tanto, los procesos nativos con un bitness de 64 encuentran" su "DLL donde los esperan: en la carpeta System32. Un segundo directorio, SysWOW64, contiene el 32 DLL de bits. El redirector del sistema de archivos hace la magia de ocultar el directorio System32 real para los procesos de 32 bits y mostrar SysWOW64 bajo el nombre de System32 ".

Editar: si estás hablando de un instalador, realmente no deberías codificar la ruta de acceso a la carpeta del sistema. En su lugar, deje que Windows se encargue de usted según si su instalador se está ejecutando o no en la capa de emulación.

Me gustaría saber cuándo debemos colocar un archivo debajo de

C: / Windows / System32 o C: / Windows / SysWOW64, en un sistema de ventanas de 64 bits.

Tenía dos DLL, uno para 32 bits, uno para 64 bits.

Lógicamente, pensé que pondría la DLL de 32 bits en C: / Windows / System32, y la DLL de 64 bits en C: / Windows / SysWOW64.

Para mi sorpresa, es al revés ! El 32 bit uno entra en C: / Windows / SysWOW 64 , y el DLL de 64 bits entra en C: / Windows / System 32 .

Cosas muy confusas. ¿Cuál es la razón detrás de esto?


Debería agregar: ¡No deberías poner tus dll''s en / system32 / de todos modos! Modifique su código, modifique su instalador ... encuentre un hogar para sus bits que NO esté en ningún lugar debajo de c: / windows /

Por ejemplo, su instalador pone sus dlls en:

/program files/<your app dir>/ or /program files/common files/<your app name>/

( Nota : la forma en que realmente hace esto es usar el entorno var:% ProgramFiles% o% ProgramFiles (x86)% para encontrar dónde se encuentran los Archivos de programa ... usted no asume que es c: / archivos de programa / .. ..)

y luego establece una etiqueta de registro:

HKLM/software/<your app name> -- dllLocation

El código que utiliza sus dlls lee el registro, luego se vincula dinámicamente a los dlls en esa ubicación.

Lo anterior es la manera inteligente de ir.

Nunca instale sus dlls, o dlls de terceros en / system32 / o / syswow64. Si tiene que cargar estáticamente, coloque sus archivos DLL en su directorio exe (donde se encontrarán). Si no puedes predecir el exe dir (por ejemplo, algún otro exe llamará a tu dll), es posible que tengas que poner tu dll dir en la ruta de búsqueda (¡evita esto si es posible!)

system32 y syswow64 son para archivos provistos por Windows ... no para archivos de otra persona . La única razón por la que la gente se metió en el mal hábito de poner cosas allí es porque siempre está en la ruta de búsqueda, y muchas aplicaciones / módulos usan enlaces estáticos. (Entonces, si realmente te pones al día, el verdadero pecado es la vinculación estática, esto es un pecado en el código nativo y en el código administrado, ¡siempre es un vínculo siempre dinámico!)


Se encontró con el mismo problema y lo investigó por unos minutos.

Me enseñaron a usar Windows 3.1 y DOS, ¿recuerdas esos días? Poco después trabajé estrictamente con computadoras Macintosh durante algún tiempo, luego comencé a regresar a Windows después de comprar una máquina de x64 bits.

Hay razones reales detrás de estos cambios (algunos dirían importancia histórica), que son necesarios para que los programadores continúen su trabajo.

La mayoría de los cambios se mencionan anteriormente:

  • Program Files vs Program Files Program Files (x86)

    Al principio, los archivos de 16/86 bits estaban escritos en procesadores Intel ''86''.

  • System32 realmente significa System64 (en Windows de 64 bits)

    Cuando los desarrolladores comenzaron a trabajar con Windows7, hubo varios problemas de compatibilidad donde se almacenaron otras aplicaciones.

  • SysWOW64 realmente significa SysWOW32

    Esencialmente, en inglés simple, significa ''Windows en Windows dentro de una máquina de 64 bits'' . Cada carpeta indica dónde están ubicadas las DLL para las aplicaciones que desean usar.

Aquí hay dos enlaces con toda la información básica que necesita:

¡Espero que esto aclare las cosas!


System32 es donde Windows colocó históricamente todas las DLL de 32 bits, y el sistema fue para las DLL de 16 bits. Cuando Microsoft creó el sistema operativo de 64 bits, todos los que conozco esperaban que los archivos residieran en System64, pero Microsoft decidió que tenía más sentido colocar archivos de 64 bits en System32. El único razonamiento que he podido encontrar es que querían que todo lo que era de 32 bits funcionara en un Windows de 64 bits sin tener que cambiar nada en los programas, simplemente volver a compilarlo y listo. La forma en que resolvieron esto, para que las aplicaciones de 32 bits aún pudieran ejecutarse, era crear un subsistema de ventanas de 32 bits llamado Windows32 en Windows64. Como tal, el acrónimo SysWOW64 se creó para el directorio del sistema del subsistema de 32 bits. El sistema es la abreviatura de Sistema y WOW64 es la abreviatura de Windows32OnWindows64.
Dado que Windows 16 ya está segregado de Windows 32, no había necesidad de una equivalencia de Windows 16 en Windows 64. Dentro del subsistema de 32 bits, cuando un programa va a usar archivos del directorio system32, en realidad obtienen los archivos del directorio SysWOW64. Pero el proceso es defectuoso.

Es un diseño horrible. Y en mi experiencia, tuve que hacer muchos más cambios para escribir aplicaciones de 64 bits, ya que simplemente cambiar el directorio de System32 para leer System64 habría sido un cambio muy pequeño, y uno que las directivas de precompilación pretenden manejar.