2009-10-08 27 views

risposta

30

Il nome user32.dll è fuorviante. È la versione a 64 bit di user32.dll che stai chiamando. La versione a 64 bit si trova a %windir%\System32\user32.dll.

Una versione a 32 bit è inclusa per la compatibilità con le applicazioni a 32 bit. Si trova a %windir%\SysWOW64\user32.dll. È possibile controllare utilizzando l'utility dumpbin:

System32 \ user32.dll:

FILE HEADER VALUES 
     8664 machine (x64) 

SysWOW64 \ user32.dll:

FILE HEADER VALUES 
     14C machine (x86) 
+0

Ora è fuorviante, ma è stato originariamente chiamato così per differenziare tra 16 e 32 bit, vero? Ma non riescono a cambiare il nome, che spezzerebbe troppe cose ... –

+0

Sì. Ricordo distintamente i problemi di protezione generale causati da "USER.EXE" in Windows 3.1 durante la mia infanzia. –

+2

Devi amare come viene ancora chiamata la directory System32 in 64 bit windows :-) – Justin

0

Non c'è user64.dll per la stessa identica ragione appena descritto, il programma .net può essere agnostico per l'architettura della cpu, quindi lo stesso codice deve funzionare su x86 e x64.
Se si porta il programma su piattaforma x86, verrà comunque eseguito senza modifiche.
Immagino che quando hanno chiamato user32.dll non avessero in mente quegli scenari.