64-Bit-Anwendungen64-bit Applications

Wenn Sie eine Anwendung kompilieren, können Sie festlegen, dass sie auf einem Windows-Betriebssystem mit 64 Bit entweder als systemeigene Anwendung oder unter WOW64 (Windows-32-Bit-On-Windows-64-Bit) ausgeführt werden soll.When you compile an application, you can specify that it should run on a Windows 64-bit operating system either as a native application or under WOW64 (Windows 32-bit on Windows 64-bit). WOW64 ist eine Kompatibilitätsumgebung, die die Ausführung einer 32-Bit-Anwendung auf einem 64-Bit-System ermöglicht.WOW64 is a compatibility environment that enables a 32-bit application to run on a 64-bit system. WOW64 ist allen in 64-Bit-Versionen des Windows-Betriebssystems enthalten.WOW64 is included in all 64-bit versions of the Windows operating system.

Ausführen von 32-Bit-Anwendungen im Vergleich zu 64-Bit-Anwendungen unter WindowsRunning 32-bit vs. 64-bit Applications on Windows

Alle mit den Versionen 1.0 oder 1.1 von .NET Framework erstellten Anwendungen werden auf einem 64-Bit-Betriebssystem als 32-Bit-Anwendungen behandelt und immer unter WOW64 und der 32-Bit-Common Language Runtime (CLR) ausgeführt.All applications that are built on the .NET Framework 1.0 or 1.1 are treated as 32-bit applications on a 64-bit operating system and are always executed under WOW64 and the 32-bit common language runtime (CLR). 32-Bit-Anwendungen, die auf .NET Framework 4.NET Framework 4 oder höheren Versionen erstellt werden, können auch unter WOW64 auf 64-Bit-Systemen ausgeführt werden.32-bit applications that are built on the .NET Framework 4.NET Framework 4 or later versions also run under WOW64 on 64-bit systems.

Visual Studio installiert die 32-Bit-Version der CLR auf einem x86-Computer und sowohl die 32-Bit-Version als auch die entsprechende 64-Bit-Version der CLR auf einem 64-Bit-Windows-Computer.Visual Studio installs the 32-bit version of the CLR on an x86 computer, and both the 32-bit version and the appropriate 64-bit version of the CLR on a 64-bit Windows computer. (Da Visual Studio eine 32-Bit-Anwendung ist, wenn sie in einem 64-Bit-System installiert ist, wird sie unter WOW64 ausgeführt.)(Because Visual Studio is a 32-bit application, when it is installed on a 64-bit system, it runs under WOW64.)

Hinweis

Aufgrund des Designs der x86-Emulation und des WOW64-Subsystems für die Itanium-Prozessorfamilie ist die Ausführung von Anwendungen auf einen Prozessor beschränkt.Because of the design of x86 emulation and the WOW64 subsystem for the Itanium processor family, applications are restricted to execution on one processor. Diese Faktoren beeinträchtigen die Leistung und Skalierbarkeit der 32-Bit-Version von .NET Framework-Anwendungen, die unter Itanium-basierten Systemen ausgeführt werden.These factors reduce the performance and scalability of 32-bit .NET Framework applications that run on Itanium-based systems. Sie sollten nach Möglichkeit .NET Framework 4.NET Framework 4 verwenden, das systemeigene 64-Bit-Unterstützung für Itanium-basierte Systeme zur Verbesserung von Leistung und Skalierbarkeit bietet.We recommend that you use the .NET Framework 4.NET Framework 4, which includes native 64-bit support for Itanium-based systems, for increased performance and scalability.

Wenn Sie eine verwaltete 64-Bit-Anwendung auf einem 64-Bit-Windows-Betriebssystem ausführen, können Sie standardmäßig ein Objekt mit einer Größe von maximal 2 Gigabyte (GB) erstellen.By default, when you run a 64-bit managed application on a 64-bit Windows operating system, you can create an object of no more than 2 gigabytes (GB). In .NET Framework 4.5.NET Framework 4.5 können Sie diese Beschränkung aber erhöhen.However, in the .NET Framework 4.5.NET Framework 4.5, you can increase this limit. Weitere Informationen finden Sie unter <gcAllowVeryLargeObjects>-Element.For more information, see the <gcAllowVeryLargeObjects> element.

Viele Assemblys können sowohl unter der 32-Bit-Version als auch der 64-Bit-Version der CLR ausgeführt werden.Many assemblies run identically on both the 32-bit CLR and the 64-bit CLR. Allerdings zeigen einige Programme je nach CLR möglicherweise ein anderes Verhalten, wenn Sie eine oder mehrere der folgenden Elemente aufweisen:However, some programs may behave differently, depending on the CLR, if they contain one or more of the following:

  • Strukturen, die Member enthalten, deren Größe sich je nach Plattform ändert (z. B. jeder beliebige Zeigertyp).Structures that contain members that change size depending on the platform (for example, any pointer type).

  • Zeigerarithmetik, die Größen von Konstanten einschließt.Pointer arithmetic that includes constant sizes.

  • Fehlerhafter Plattformaufruf oder COM-Deklarationen, die Int32 statt IntPtr für Handles verwenden.Incorrect platform invoke or COM declarations that use Int32 for handles instead of IntPtr.

  • Code, der IntPtr in Int32 umwandelt.Code that casts IntPtr to Int32.

Weitere Informationen zum Portieren einer 32-Bit-Anwendung auf 64-Bit-CLR ausgeführt wird, finden Sie unter Migrieren von 32-Bit-verwaltetem Code auf 64-Bit.For more information about how to port a 32-bit application to run on the 64-bit CLR, see Migrating 32-bit Managed Code to 64-bit.

Allgemeine Informationen zur 64-Bit-ProgrammierungGeneral 64-Bit Programming Information

Allgemeine Informationen zur 64-Bit-Programmierung finden Sie in den folgenden Dokumenten:For general information about 64-bit programming, see the following documents:

Compilerunterstützung für das Erstellen von 64-Bit-AnwendungenCompiler Support for Creating 64-Bit Applications

Wenn Sie .NET Framework verwenden, um eine Anwendung auf einem 32-Bit- oder 64-Bit-Computer zu erstellen, wird die Anwendung auf einem 64-Bit-Computer als systemeigene Anwendung ausgeführt (d. h. nicht unter WOW64).By default, when you use the .NET Framework to build an application on either a 32-bit or a 64-bit computer, the application will run on a 64-bit computer as a native application (that is, not under WOW64). In der folgenden Tabelle werden die Dokumente aufgelistet, die Anweisungen zur Verwendung von Visual Studio-Compilern für die Erstellung von 64-Bit-Anwendungen enthalten, die als systemeigene Anwendungen, unter WOW64 oder in beiden Varianten ausgeführt werden.The following table lists documents that explain how to use Visual Studio compilers to create 64-bit applications that will run as native, under WOW64, or both.

CompilerCompiler CompileroptionCompiler option
Visual BasicVisual Basic /platform (Visual Basic)/platform (Visual Basic)
Visual C#Visual C# /platform (C# Compileroptionen)/platform (C# Compiler Options)
Visual C++Visual C++ Sie können plattformagnostische Microsoft Intermediate Language (MSIL)-Anwendungen erstellen, indem Sie /clr:safe verwenden.You can create platform-agnostic, Microsoft intermediate language (MSIL) applications by using /clr:safe. Weitere Informationen finden Sie unter /clr (Common Language Runtime-Kompilierung).For more information, see /clr (Common Language Runtime Compilation).

Visual C++ enthält einen gesonderten Compiler für jedes 64-Bit-Betriebssystem.Visual C++ includes a separate compiler for each 64-bit operating system. Weitere Informationen zur Verwendung von Visual C++ für die Erstellung von nativen Anwendungen, die auf einem 64-Bit-Windows-Betriebssystem ausgeführt werden, finden Sie unter 64-Bit-Programmierung.For more information about how to use Visual C++ to create native applications that run on a 64-bit Windows operating system, see 64-bit Programming.

Bestimmen des Status einer EXE- oder DLL-DateiDetermining the Status of an .exe File or .dll File

Um zu bestimmen, ob eine EXE- oder DLL-Datei nur auf einer bestimmten Plattform oder unter WOW64 ausgeführt werden soll, verwenden Sie das CorFlags.exe (Konvertierungstool CorFlags) ohne Optionen.To determine whether an .exe file or .dll file is meant to run only on a specific platform or under WOW64, use CorFlags.exe (CorFlags Conversion Tool) with no options. Weiterhin können Sie mit "CorFlags.exe" auch den Plattformstatus einer EXE- oder DLL-Datei ändern.You can also use CorFlags.exe to change the platform status of an .exe file or .dll file. Im CLR-Header einer Visual Studio-Assembly ist die Nummer der Hauptversion der Laufzeit auf 2 und die Nummer der Nebenversion auf 5 festgelegt.The CLR header of a Visual Studio assembly has the major runtime version number set to 2 and the minor runtime version number set to 5. Anwendungen, für die die Nebenversionsnummer der Laufzeit auf 0 festgelegt ist, werden als ältere Anwendungen behandelt und auf 64-Bit-Computern unter WOW64 ausgeführt.Applications that have the minor runtime version set to 0 are treated as legacy applications and are always executed under WOW64.

Wenn Sie eine EXE- oder DLL-Datei programmgesteuert abfragen möchten, um festzustellen, ob sie nur auf einer bestimmten Plattform oder unter WOW64 ausgeführt werden kann, verwenden Sie die Module.GetPEKind-Methode.To programmatically query an .exe or .dll to see whether it is meant to run only on a specific platform or under WOW64, use the Module.GetPEKind method.