2009-10-08 5 views

Respuesta

30

El nombre user32.dll es engañoso. Es la versión de 64 bit de user32.dll que está llamando. La versión de 64 bits se encuentra en %windir%\System32\user32.dll.

Se incluye una versión de 32 bits para compatibilidad con aplicaciones de 32 bits. Se encuentra ubicado en %windir%\SysWOW64\user32.dll. Puede inspeccionar usando la utilidad dumpbin:

System32 \ user32.dll:

FILE HEADER VALUES 
     8664 machine (x64) 

SysWOW64 \ user32.dll:

FILE HEADER VALUES 
     14C machine (x86) 
+0

Es engañoso ahora, pero originalmente fue nombrado para diferenciar entre 16 y 32 bits, ¿no? Pero difícilmente pueden cambiar el nombre, eso rompería muchas cosas ... –

+0

Sí. Recuerdo claramente las fallas de protección general causadas por "USER.EXE" en Windows 3.1 en mi infancia. –

+2

Me encanta cómo se llama todavía al directorio System32 en Windows de 64 bits :-) – Justin

0

No hay user64.dll por la misma razón exacta usted acaba de describir, el programa .net puede ser independiente de la arquitectura de la CPU, por lo que el mismo código debe funcionar en x86 y x64.
Si lleva su programa a la plataforma x86, seguirá ejecutándose sin modificaciones.
Supongo que cuando nombraron user32.dll no tenían esos escenarios en mente.

Cuestiones relacionadas