2009-10-08 22 views
24

64 bitlik bir uygulamadan 64 bit Windows'ta user32.dll dosyasını pinvoke etmek yanlış mı? Bunu başarılı bir şekilde defalarca yaptım ve hiç bir hata yapmadım, ama çelişkili görünüyor. Bunun yerine user64.dll için bakmalıyım?C# 64 bit sistemde user32.dll kullanıcısı

cevap

30

user32.dll adı yanıltıcıdır. Bu, aradığınız user32.dll'un 64 bit sürümü. 64 bit sürümü %windir%\System32\user32.dll'da bulunur.

32 bit uygulamalarla uyumluluk için 32 bitlik bir sürüm bulunur. %windir%\SysWOW64\user32.dll adresinde bulunmaktadır. Sen dumpbin yardımcı programını kullanarak onları inceleyebilir:

System32 \ user32.dll:

FILE HEADER VALUES 
     8664 machine (x64) 

SysWOW64 \ user32.dll:

FILE HEADER VALUES 
     14C machine (x86) 
+0

Şimdi yanıltıcıdır, ancak başlangıçta 16 ile 32 bit arasında ayrım yapmak için adlandırılmış değil mi? Ama isimleri pek de zorlayamazlar, bu çok fazla şey kırıyor ... –

+0

Evet. Çocukluk günlerimde Windows 3.1'de "USER.EXE" tarafından neden olunan genel koruma hatalarını açıkça hatırlıyorum. –

+2

64 bit windows'ta System32 dizinine hala nasıl denir? – Justin

0

aynı nedenden dolayı hiçbir user64.dll yoktur Sadece açıklar, .net programı cpu mimarisine agnostik olabilir, aynı kodun x86 ve x64 üzerinde çalışması gerekir.
Programınızı x86 platformuna taşıdığınızda, herhangi bir değişiklik yapmadan da çalışır.
Kullanıcı adı verildiğinde, bu senaryoları göz önünde bulundurmadıkları sanırım.

İlgili konular