Freigeben über


64-Bit-Anwendungen

Wenn Sie eine Anwendung kompilieren, können Sie angeben, dass sie auf einem Windows 64-Bit-Betriebssystem entweder als systemeigene Anwendung oder unter WOW64 (Windows 32-Bit unter Windows 64-Bit) ausgeführt werden soll. WOW64 ist eine Kompatibilitätsumgebung, in der eine 32-Bit-Anwendung auf einem 64-Bit-System ausgeführt werden kann. WOW64 ist in allen 64-Bit-Versionen des Windows-Betriebssystems enthalten.

Ausführen von 32-Bit- und 64-Bit-Anwendungen unter Windows

32-Bit-Anwendungen, die auf .NET Framework 4 oder höher basieren, werden unter WOW64 auf 64-Bit-Systemen ausgeführt.

Hinweis

Aufgrund des Designs der x86-Emulation und des WOW64-Subsystems für die Itanium-Prozessorfamilie sind Anwendungen auf die Ausführung auf einem Prozessor beschränkt. Diese Faktoren verringern die Leistung und Skalierbarkeit von 32-Bit-.NET-Anwendungen, die auf Itanium-basierten Systemen ausgeführt werden. Es wird empfohlen, .NET Framework 4 oder höher zu verwenden, das systemeigene 64-Bit-Unterstützung für Itanium-basierte Systeme umfasst, um eine höhere Leistung und Skalierbarkeit zu erzielen.

Wenn Sie eine 64-Bit-verwaltete Anwendung auf einem 64-Bit-Windows-Betriebssystem ausführen, können Sie standardmäßig ein Objekt von maximal 2 Gigabyte (GB) erstellen. In .NET Framework 4.5 und höher können Sie diesen Grenzwert jedoch erhöhen. Weitere Informationen finden Sie im <gcAllowVeryLargeObjects-Element>.

Viele Assemblys werden sowohl auf der 32-Bit-CLR als auch auf der 64-Bit-CLR identisch ausgeführt. Einige Programme verhalten sich jedoch je nach CLR möglicherweise anders, wenn sie eine oder mehrere der folgenden Elemente enthalten:

  • Strukturen, die Elemente enthalten, die die Größe je nach Plattform ändern (z. B. beliebiger Zeigertyp).
  • Zeigerarithmetik, die Konstantengrößen enthält.
  • Fehlerhafter Plattformaufruf oder COM-Deklarationen, die Int32 statt IntPtr für Handles verwenden.
  • Code, der IntPtr in Int32 umwandelt.

Weitere Informationen zum Portieren einer 32-Bit-Anwendung zur Ausführung auf der 64-Bit-CLR finden Sie unter Migrieren von 32-Bit-verwaltetem Code zu 64-Bit.

Allgemeine 64-Bit-Programmierinformationen

Allgemeine Informationen zur 64-Bit-Programmierung finden Sie in den folgenden Dokumenten:

Compilerunterstützung für das Erstellen von 64-Bit-Anwendungen

Wenn Sie .NET zum Erstellen einer Anwendung auf einem 32-Bit- oder 64-Bit-Computer verwenden, wird die Anwendung standardmäßig auf einem 64-Bit-Computer als systemeigene Anwendung ausgeführt (d. h. nicht unter WOW64). In der folgenden Tabelle sind Dokumente aufgeführt, in denen erläutert wird, wie Visual Studio-Compiler zum Erstellen von 64-Bit-Anwendungen verwendet werden, die als systemeigene, unter WOW64 oder beides ausgeführt werden.

Compiler Compileroption
Visual Basic -Plattform (Visual Basic)
Visual C# -platform (C#-Compileroptionen)
Visual C++ Sie können plattformagnostische, einheitliche gemeinsame Sprache (CIL)-Anwendungen mithilfe von /clr:safe erstellen. Weitere Informationen finden Sie unter -clr (Common Language Runtime Compilation).

Visual C++ enthält einen separaten Compiler für jedes 64-Bit-Betriebssystem. Weitere Informationen zur Verwendung von Visual C++ zum Erstellen systemeigener Anwendungen, die auf einem 64-Bit-Windows-Betriebssystem ausgeführt werden, finden Sie unter 64-Bit-Programmierung.

Ermitteln des Status einer .exe Datei oder .dll Datei

Um festzustellen, ob eine .exe Datei oder .dll Datei nur auf einer bestimmten Plattform oder unter WOW64 ausgeführt werden soll, verwenden Sie CorFlags.exe (CorFlags Conversion Tool) ohne Optionen. Sie können auch CorFlags.exe verwenden, um den Plattformstatus einer .exe Datei oder .dll Datei zu ändern. Im CLR-Header einer Visual Studio-Assembly ist die Nummer der Hauptversion der Laufzeit auf 2 und die Nummer der Nebenversion auf 5 festgelegt. Anwendungen, für die die Nebenlaufzeitversion auf 0 festgelegt ist, werden als Legacyanwendungen behandelt und immer unter WOW64 ausgeführt.

Verwenden Sie die Module.GetPEKind Methode, um programmgesteuert eine .exe oder .dll abzufragen, ob sie nur auf einer bestimmten Plattform oder unter WOW64 ausgeführt werden soll.