Auf meinem 32-Bit-System (Windows 10), habe ich ein sehr einfaches Windows Forms (.NET FW 3.5) Anwendung:Warum läuft 32-Bit-Programm nicht unter WoW64?
bool x86 = IntPtr.Size == 4;
if (x86)
{
label1.Text = "OS: 32 bit";
}
else // IntPtr.Size == 8
{
label1.Text = "OS: 64 bit";
// For following method, see:
// http://stackoverflow.com/a/336729/360840
if (InternalCheckIsWow64())
{
label1.Text += "; 32 bit program running under WoW64";
}
}
in Visual Studio 2015 unter Eigenschaften -> Build, habe ich Platform Ziel als x86.
Ich nahm diese ausführbare Datei zu einem 64-Bit-Windows Server 2012 Datacenter-Edition und führte es aus. Ich hatte erwartet, dass es sich unter WoW64 melden würde, war aber überrascht herauszufinden, dass dies nicht der Fall war. es meldet nur, dass die Architektur 64 Bit ist, aber zeigt nicht den "; 32-Bit-Programm läuft unter WoW64" -Teil an.
Warum ist das und was ist los?
Warten. Das Label ist tatsächlich auf "OS: 64 Bit" mit einem Build-Ziel auf x86 festgelegt? – Milster
Ja, 32-Bit-Apps können auf 64-Bit-Systemen ausgeführt werden. – Sabuncu
Das ist nicht meine Frage. Soweit ich mich erinnern kann, sollte IntPtr.Size auf 4 gesetzt werden, um den Build auf x86 zu setzen (da der Prozess ein 32-Bit-Prozess sein wird) (genau das ist das Verhalten, das ich gerade in einer Testkonsolen-App auf meinem PC sehe))). Deshalb habe ich gefragt, ob in Ihrem Fall das Label wirklich auf "OS: 64 Bit" eingestellt ist. – Milster