Freigeben über


Problembehandlung bei x86-Desktop-Apps

Von Bedeutung

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

Wenn eine x86-Desktop-App nicht wie auf einem x86-Computer funktioniert, finden Sie hier einige Anleitungen, die Ihnen bei der Problembehandlung helfen.

Thema Lösung
Ihre App basiert auf einem Treiber, der nicht für Arm konzipiert ist. Rekompilieren Sie Ihren x86-Treiber für Arm64. Siehe 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 ein Win32-Entwickler sind, empfehlen wir, Ihre App auf Arm64 neu zu kompilieren. Weitere Informationen finden Sie im frühen Einblick der Visual Studio-Unterstützung für Windows 10 auf der Arm-Entwicklung.
Ihre App verwendet eine OpenGL-Version später als 1.1 oder erfordert hardwarebeschleunigte OpenGL. Verwenden Sie den DirectX-Modus der App, falls sie verfügbar ist. x86-Apps, die DirectX 9, DirectX 10, DirectX 11 und DirectX 12 verwenden, laufen auf ARM. Weitere Informationen finden Sie unter DirectX-Grafiken und -Spiele.
Ihre x86-App funktioniert nicht wie erwartet. Versuchen Sie, das Kompatibilitätsproblembehandlungstool zu verwenden, indem Sie den Anleitungen von Programmkompatibilitätsbehandlung auf Armfolgen. Weitere Schritte zur Problembehandlung finden Sie im Artikel zur Problembehandlung für x86-Apps auf Arm .

Bewährte Methoden für WOW

Ein häufiges Problem tritt auf, wenn eine App feststellt, 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 folgende Aktionen ausführen:

  • Versuchen Sie, die x64-Version von sich selbst zu installieren, die auf Arm nicht unterstützt wird.
  • Suchen Sie unter der systemeigenen Registrierungsansicht nach anderer Software.
  • Gehen Sie davon aus, dass ein 64-Bit-.NET Framework verfügbar ist.

Im Allgemeinen sollte eine App keine Annahmen über das Hostsystem treffen, wenn sie unter WOW ausgeführt werden soll. Vermeiden Sie die Interaktion mit systemeigenen 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. Das ursprüngliche IsWow64Process gibt nur an, ob die Anwendung auf einem x64-Computer ausgeführt wird. Apps sollten jetzt IsWow64Process2 verwenden, um festzustellen, ob sie auf einem System mit WOW-Unterstützung ausgeführt werden.

Fahrer

Alle Kernelmodustreiber, User-Mode Driver Framework (UMDF) Treiber 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 einwandfrei funktionieren, jedoch muss ihr Treiber für Arm64 neu kompiliert werden, und alle vom Treiber abhängigen App-Erlebnisse sind nicht verfügbar. Weitere Informationen zum Kompilieren Ihres Treibers für Arm64 finden Sie unter Building Arm64 Drivers with the WDK.

Shell-Erweiterungen

Apps, die versuchen, Windows-Komponenten zu verbinden 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), unterstützenden Technologien und Shell-Erweiterungs-Apps verwendet (z. B. zum Anzeigen von Cloudspeichersymbolen im Explorer oder einem Kontextmenü (Rechtsklick)). Informationen zum Erneuten Kompilieren Ihrer Apps oder DLLs zu Arm64 finden Sie in der Early Preview der Visual Studio-Unterstützung für Windows 10 für die Arm-Entwicklung Blogbeitrag.

Fehlersuche

Um das Verhalten Ihrer App eingehender zu analysieren, lesen Sie Debuggen auf Arm, um mehr über Tools und Strategien für das Debuggen auf Arm zu erfahren.

Virtuelle Computer

Die Windows Hypervisor-Plattform wird auf der Qualcomm Snapdragon 835 Mobile PC Platform nicht unterstützt. Daher funktionieren virtuelle Computer, die Hyper-V verwenden, nicht. Wir investieren weiterhin in diese Technologien in zukünftige Qualcomm-Chipsätze.

Dynamische Codegenerierung

X86-Desktop-Apps werden auf Arm64 vom System emuliert, indem zur Laufzeit Arm64-Anweisungen generiert werden. Dies bedeutet, dass eine x86-Desktop-App nicht unterstützt werden kann, als x86 auf Arm64 ausgeführt zu werden, wenn sie die dynamische Codegenerierung oder -änderung im Prozess verhindert.

Einige Apps aktivieren diese Sicherheitsminderung in ihrem Prozess unter Verwendung der SetProcessMitigationPolicy-API mit dem ProcessDynamicCodePolicy-Flag. Um als x86-Prozess erfolgreich auf Arm64 ausgeführt zu werden, muss diese Entschärfungsrichtlinie deaktiviert werden.