Problembehandlung für x86-Desktop-Apps

Wichtig

Mit Visual Studio 2017 oder höher ist es möglich, Ihre App in Arm64 oder Arm64EC neu zu kompilieren, sodass Ihre App mit voller nativer Geschwindigkeit ausgeführt wird. Weitere Informationen zum Kompilieren als Arm64 finden Sie im Blogbeitrag: Offizielle Unterstützung für Windows 10 zur Arm-Entwicklung. Informationen zu Arm64EC finden Sie unter Ankündigung von Arm64EC: Erstellen nativer und interoperabler Apps für Windows 11 auf Arm.

Wenn eine x86-Desktop-App auf einem x86-Computer nicht wie auf einem x86-Computer funktioniert, finden Sie hier einige Anleitungen zur Problembehandlung.

Problem Lösung
Ihre App basiert auf einem Treiber, der nicht für Arm entwickelt wurde. Kompilieren Sie Ihren x86-Treiber erneut mit Arm64. Weitere Informationen finden Sie unter Erstellen von Arm64-Treibern mit dem WDK.
Ihre App ist nur für x64 verfügbar. Wenn Sie für den Microsoft Store entwickeln, übermitteln Sie eine Arm-Version Ihrer App. Weitere Informationen finden Sie unter App-Paketarchitekturen. Wenn Sie Win32-Entwickler sind, empfehlen wir Ihnen, Ihre App mit Arm64 neu zu kompilieren. Weitere Informationen finden Sie unter Early Preview der Visual Studio-Unterstützung für Windows 10 zur Arm-Entwicklung.
Ihre App verwendet eine OpenGL-Version höher als 1.1 oder erfordert hardwarebeschleunigte OpenGL. Verwenden Sie den DirectX-Modus der App, sofern verfügbar. x86-Apps, die DirectX 9, DirectX 10, DirectX 11 und DirectX 12 verwenden, funktionieren auf Arm. Weitere Informationen finden Sie unter DirectX-Grafik und Spiele.
Ihre x86-App funktioniert nicht wie erwartet. Versuchen Sie, die Kompatibilitätsproblembehandlung zu verwenden, indem Sie die Anleitung unter Programmkompatibilitätsproblembehandlung auf Arm befolgen. Weitere Schritte zur Problembehandlung finden Sie im Artikel Problembehandlung für x86-Apps auf Arm .

Bewährte Methoden für WOW

Ein häufiges Problem tritt auf, wenn eine App erkennt, dass sie unter WOW ausgeführt wird, und dann davon ausgeht, dass sie sich auf einem x64-System befindet. Nach dieser Annahme kann die App Folgendes ausführen:

  • Versuchen Sie, die x64-Version von sich selbst zu installieren, die auf Arm nicht unterstützt wird.
  • Suchen Sie in der nativen Registrierungsansicht nach anderer Software.
  • Angenommen, ein 64-Bit-.NET-Framework ist verfügbar.

Im Allgemeinen sollte eine App keine Annahmen über das Hostsystem treffen, wenn sie unter WOW ausgeführt werden soll. Vermeiden Sie die Interaktion mit nativen Komponenten des Betriebssystems so weit wie möglich.

Eine App kann Registrierungsschlüssel in der nativen Registrierungsansicht platzieren oder Funktionen basierend auf dem Vorhandensein von WOW ausführen. Der ursprüngliche IsWow64Process gibt nur an, ob die App auf einem x64-Computer ausgeführt wird. Apps sollten jetzt IsWow64Process2 verwenden, um zu bestimmen, ob sie auf einem System mit WOW-Unterstützung ausgeführt werden.

Treiber

Alle Kernelmodustreiber, UMDF-Treiber (User-Mode Driver Framework) und Drucktreiber müssen kompiliert werden, um der Architektur des Betriebssystems zu entsprechen. Wenn eine x86-App über einen Treiber verfügt, muss dieser Treiber für Arm64 neu kompiliert werden. Die x86-App kann unter Emulation gut ausgeführt werden, ihr Treiber muss jedoch für Arm64 neu kompiliert werden, und jede App-Erfahrung, die vom Treiber abhängt, ist nicht verfügbar. Weitere Informationen zum Kompilieren ihres Treibers für Arm64 finden Sie unter Erstellen von Arm64-Treibern mit dem WDK.

-Shellerweiterungen

Apps, die versuchen, Windows-Komponenten zu integrieren oder ihre DLLs in Windows-Prozesse zu laden, müssen diese DLLs neu kompilieren, um der Architektur des Systems zu entsprechen. d.h. Arm64. In der Regel werden diese von Eingabemethoden-Editoren (IMEs), Hilfstechnologien und Shellerweiterungs-Apps verwendet (z. B. zum Anzeigen von Cloudspeichersymbolen in Explorer oder einem Kontextmenü mit der rechten Maustaste). Informationen zum erneuten Kompilieren Ihrer Apps oder DLLs in Arm64 finden Sie im Blogbeitrag Early Preview of Visual Studio support for Windows 10 on Arm development ( Early Preview of Visual Studio support for Windows 10 on Arm development).

Debuggen

Um das Verhalten Ihrer App ausführlicher zu untersuchen, finden Sie unter Debuggen auf Arm weitere Informationen zu Tools und Strategien für das Debuggen in Arm.

Virtual Machines

Die Windows Hypervisor-Plattform wird auf der Qualcomm Snapdragon 835 Mobile PC Platform nicht unterstützt. Daher funktioniert die Ausführung virtueller Computer mit Hyper-V nicht. Wir investieren weiterhin in diese Technologien für zukünftige Qualcomm-Chipsätze.

Dynamische Codegenerierung

X86-Desktop-Apps werden auf Arm64 vom System emuliert, das Arm64-Anweisungen zur Laufzeit generiert. Das bedeutet, wenn eine x86-Desktop-App die dynamische Codegenerierung oder -änderung in ihrem Prozess verhindert, kann diese App nicht als x86 auf Arm64 ausgeführt werden.

Dies ist eine Sicherheitsminderung, die einige Apps in ihrem Prozess mithilfe der SetProcessMitigationPolicy-API mit dem ProcessDynamicCodePolicy Flag aktivieren. Damit Arm64 als x86-Prozess erfolgreich ausgeführt werden kann, muss diese Entschärfungsrichtlinie deaktiviert werden.