Installation af x86- og x64-apps på Windows 11 ARM med Prism: Komplet guide til kompatibilitet, begrænsninger og løsninger

Sidste ændring: 10/09/2025
Forfatter: Isaac
  • Windows 11 ARM emulerer x86 og x64 med Prism (24H2), hvilket forbedrer ydeevne og CPU-forbrug.
  • Ikke alt kan efterlignes: drivere, shell-udvidelser og begrænset dynamisk kode kræver native Arm64.
  • Der er finjusteringer (cache, CHPE, multicore, SMC), der øger kompatibiliteten i apps modstridende.
  • Den optimale vej er at portere til Arm64/Arm64EC med VS 2022 og udgive native binære filer, samtidig med at paritet opretholdes.

x86-emulering på Windows 11 ARM

Hvis du lige har købt en pc med en Arm-processor – som f.eks. en Copilot+ med en Snapdragon X – spekulerer du sikkert på, hvordan du kan køre dine x86- og x64-applikationer på Windows 11 ARM uden at miste kompatibilitet. Svaret ligger i systemets indbyggede emulering og, for nylig, i Prism, det nye oversættelseslag i Windows 11 24H2 , der fremskynder og forbedrer oplevelsen.

Denne guide giver en klar forklaring på, hvordan emulering fungerer, dens begrænsninger, og hvorfor x64-installationsprogrammer nogle gange nægter at fortsætte. Du vil også lære om mindre kendte kompatibilitetsindstillinger, der kan gøre en betydelig forskel, se konkrete eksempler på fejl i den virkelige verden , gennemgå apps, der allerede er native kompatible med Arm, og finde en migreringssti for udviklere, der ønsker at kompilere til Arm64 ved hjælp af Visual Studio eller LLVM.

Hvad er emulering i Windows 11 på Arm?

Windows 11 til ARM inkluderer et oversættelseslag, der gør det muligt at køre x86- og x64-apps problemfrit . Sammenligning af Windows ARM vs. x86

Emuleringen er "transparent": den er en del af operativsystemet og kræver ingen yderligere installation. Internt kompilerer emulatoren x86/x64 instruktionsblokke til arm64 under kørsel (JIT) og anvender optimeringer for at generere god native kode. En systemtjeneste vedligeholder en cache af disse oversatte blokke pr. modul, så når du genåbner appen, reduceres oversættelsesomkostningerne betydeligt.

Når det kommer til x86-processer, kommer det velkendte WOW64-lag i spil. Ligesom i x64-systemer tillader WOW64 x86-binære filer at køre i 64-bit miljøer, og i tilfældet med Windows på Arm tilføjer det også den omdirigering af filsystemet og registreringsdatabasen, der er nødvendig for korrekt at isolere x86-processen. For x64 er historien anderledes: der er intet mellemliggende WOW64-lag, og Windows bruger systembinære filer i ARM64X PE-format, der kan indlæses i både arm64- og x64-processer fra samme placering, hvilket undgår omdirigeringer og sikrer ensartet systemadgang.

Der er et vigtigt punkt: emulering dækker kun brugertilstandskode . Kerneltilstandsdrivere, UMDF'er og andre komponenter, der interagerer med kernen, skal kompileres native til Arm64. Hvis en applikation er afhængig af en driver, der ikke findes til Arm, vil emulering ikke kunne fungere med den komponent.

Prism på Windows 11 ARM

Prism: Det nye oversættelseslag til Windows 11 24H2

Med Windows 11 24H2 kommer Prism, den nye emulator, der erstatter den tidligere teknologi med betydelige optimeringer i ydeevne og CPU-forbrug . Microsoft hævder forbedringer på mellem 10% og 20% ​​på den samme hardware efter installation af 24H2, hvilket du vil bemærke i indlæsningstider, brugergrænsefladen og ressourceforbrug.

Prism er finjusteret til Qualcomm desktop-processorer, især Snapdragon X-serien, der findes i Copilot+ pc'er. Nogle avancerede optimeringer afhænger af specifikke hardwarefunktioner, men Prism er tilgængelig for enhver enhed, der kører Windows 11 24H2 på Arm, og baner vejen for sameksistens mellem native og emulerede apps under denne overgang.

Filosofien minder meget om Rosetta 2 på Apple Silicon Macs : det handler om at opretholde x86-64-økosystemet, mens udviklere udgiver deres native Arm-versioner. Microsoft er overbevist om, at Prisms ydeevne vil være konkurrencedygtig, og efterhånden som kataloget af Arm64-apps vokser, vil behovet for emulering naturligt falde.

Hvordan systemet registrerer emulering, og hvad din app ser

En x86/x64-app "ved" typisk ikke, at den kører på en Arm-pc, medmindre den forespørger specifikke API'er. Brug af IsWow64Process2 kan for eksempel fortælle dig, om den kører under WoW, og hvilken underliggende arkitektur der er tale om. Forespørgsler om CPU-detaljer via API returnerer data om den emulerede processor, og for kompatibilitet kan GetNativeSystemInfo også levere virtualiserede værdier, når de kaldes indefra en emuleret proces.

  Find ud af, hvordan du reparerer en bærbar, der er fanget på CTRL ALT DELETE-skærmen

Hvis du har brug for at kende værtens muligheder fra en app, skal du bruge GetMachineTypeAttributes til at kontrollere, om systemet understøtter emulering, og hvilke typer. Dette er den metode, der anbefales af Microsoft til at træffe kompatibilitetsbeslutninger uden at introducere fejl baseret på arkitektoniske antagelser.

Hvorfor x64-apps nogle gange ikke kan installeres, og andre tilfælde hvor emulering fejler

Et meget almindeligt spørgsmål: "Jeg har Windows 11 24H2 med Prism, og alligevel fortæller et x64-installationsprogram mig, at mit system ikke er kompatibelt." Dette skete for eksempel for en bruger med Mechdyne TGX-fremviseren på en Surface Pro 11. Årsagen er normalt selve installationsprogrammet, som implementerer arkitekturtjek og blokerer appen, før den overhovedet kører den binære fil. Emulering opfanger ikke denne præinstallationslogik, hvis pakken beslutter sig for at "selvkassere".

Der er andre scenarier, hvor emulering kan mislykkes eller være utilstrækkelig: hvis appen afhænger af kerneltilstandsdrivere (som ikke kan emuleres), hvis den injicerer shell-udvidelser eller IME'er, der skal matche systemarkitekturen, eller hvis installationsprogrammet inkluderer komponenter, der indlæses i systemprocesser, hvor blanding af arkitekturer ikke er mulig. I disse tilfælde, selvom den primære eksekverbare fil kunne emuleres, forhindrer afhængighederne installationen i at fuldføres.

En anden kendt blok er den dynamiske kodesikkerhedspolitik. Emulering af x86-apps fungerer ved at generere arm64-kode i realtidHvis en x86-proces udløser afhjælpning ProcessDynamicCodePolicy gennem SetProcessMitigationPolicy For at forhindre generering eller ændring af JIT-kode, vil x86-appen ikke kunne køre under Arm64-emulering. Løsningen er at deaktivere denne politik i processen.

Endelig antager nogle installatører, at hvis de registrerer WOW, er de på et "klassisk" x64-system og tvinger x64-grenen af ​​deres pakker frem, hvilket ikke kan gøres på den måde på Arm. Dette mønster betragtes som dårlig praksis: anbefalingen er ikke at udlede den native arkitektur udelukkende fra tilstedeværelsen af ​​WOW, og altid at konsultere IsWow64Process2.

Kompatibilitets- og emuleringsindstillinger på Windows ARM

En mindre kendt allieret: kompatibilitetsløseren og emuleringsindstillingerne

Windows on Arm indeholder et sæt finjusteringskontroller til emulering , der kan forbedre kompatibiliteten på bekostning af ydeevnen. Du kan starte Fejlfinding af programkompatibilitet fra kontekstmenuen i .exe-filen (højreklik, Fejlfind kompatibilitet) og vælge mellem at prøve de anbefalede indstillinger eller angive det problem, du oplever.

Hvis du vælger "Fejlfind programproblemer", vil du se muligheder som "virkede i tidligere versioner, men gør det ikke nu", "åbner, men ser dårligt ud" eller "kræver yderligere tilladelser". Flere af disse muligheder anvender automatisk to effektive emuleringsindstillinger: Deaktiver programcache (forhindrer brugen af ​​den oversatte blokcache) og Deaktiver hybrid udførelsestilstand (deaktiverer CHPE og gennemtvinger kun x86-binære filer).

Derudover vil ARM under fanen Kompatibilitet i den eksekverbare fils Egenskaber have et specifikt afsnit mærket "Windows 10 på ARM" eller "Windows 11 på ARM" med knappen "Skift emuleringsindstillinger" . Derfra kan du anvende foruddefinerede sæt eller aktivere avancerede indstillinger individuelt.

De mest relevante muligheder er: deaktivering af applikationscaching (som tvinger alt til at blive oversat igen ved hver kørsel), deaktivering af CHPE-hybridtilstand (nyttigt, når kompatible x86+Arm64-binære filer introducerer inkompatibiliteter), aktivering af yderligere letvægtsbeskyttelse , krav om streng kompatibilitet med selvmodificerende kode (som understøtter flere SMC-mønstre på bekostning af ydeevne), eller deaktivering af RWX-sideoptimering . I x64-apps er der også x87 til 80-bit floating-point-emuleringsknapper for maksimal nøjagtighed, hvilket også påvirker hastigheden.

I afsnittet om multikernebrug kan du vælge mellem "Hurtig", "Streng", "Meget streng" eller "Tving enkelt kerne". Jo strengere indstillingen er, desto flere hukommelsesbarrierer introduceres der for synkronisering, og desto lavere er risikoen for subtile kapløbsbetingelser, på bekostning af reduceret ydeevne. Hvis en app er ustabil med "Hurtig", kan du prøve "Streng". Hvis en specifik indstilling løser dit problem, opfordrer Microsoft dig til at sende feedback til [email protected] for at få den inkluderet i emulatoren.

  Den rigtige måde at reparere gradvis Android-telefon eller -pille på

Bedste praksis inden for WOW og detektioner: hvordan man undgår falske antagelser

Mange problemer opstår på grund af forkerte antagelser, når WoW registreres. En app, der opdager, at den kører under WoW, bør ikke konkludere, at værten er en klassisk x64: i Arm betyder denne betingelse emulering, og registreringsdatabasevisningerne , tilstedeværelsen af ​​frameworks og systemstier svarer ikke til dem på en x86-64 pc.

Typiske fejl omfatter at tvinge x64-udgaven frem , når WOW registreres, søge efter nøgler i den "native" visning af registreringsdatabasen i stedet for at bruge abstrakte API'er eller antage tilgængeligheden af ​​64-bit .NET på værten. Anbefalingen er at konsultere IsWow64Process2, bruge Windows-funktioner, der løser stier korrekt, og undgå kode, der afhænger af værtens procesarkitektur.

Drivere, shelludvidelser og virtualisering: Når du har brug for native Arm64

Enhver driver, der berører kernen – kernetilstandsdrivere, UMDF-drivere, printerdrivere – skal kompileres som native Arm64 . Der er ingen kernelemulering. Dette påvirker scenarier som virtualisering eller applikationer, der installerer capture-drivere, antivirussoftware på lavt niveau eller filfiltre.

Shell-udvidelser, IME'er og hjælpeteknologier, der indlæser DLL'er i Windows-processer, skal også være arkitekturmæssigt kompatible med systemet. Hvis din applikation registrerer x86 DLL'er til integration med Explorer, skal du rekompilere dem til Arm64 på Arm.

Hvad angår virtuelle maskiner , er der begrænsninger i chipsættet. For eksempel er Windows Hypervisor-platformen ikke kompatibel med Qualcomm 835-platformen , så Hyper-V vil ikke fungere på den. Microsoft angiver, at de fortsætter med at investere i at udvide kompatibiliteten i fremtidige generationer.

Praktiske tips til brugere: installer, test og løs

Først skal du sørge for, at du kører Windows 11 24H2, da Prism forbedrer ydeevnen og retter inkompatibiliteter. Hvis x64-installationsprogrammet ikke virker, skal du kigge efter en native Arm64-version eller en MSIX/Store-udgave: mange moderne apps tilbyder nu pakker på tværs af platforme, der vælger den korrekte arkitektur. Hvis dit system indeholder forudinstalleret software, kan du lære, hvordan du fjerner forudinstallerede programmer og bloatware for at forenkle installationer og diagnosticering.

Hvis der kun findes et x86/x64-installationsprogram, kan du prøve at køre kompatibilitetsfejlfindingen og justere emuleringsindstillingerne (deaktiver caching, deaktiver CHPE, øg multicore-striktheden). Hvis appen kræver en driver eller injicerer shell-udvidelser, har du sandsynligvis brug for en Arm64-specifik version af disse komponenter.

For at afgøre, om en app vil virke, vedligeholder fællesskabet kataloger som "Windows on ARM", der angiver, om en app har fuld understøttelse, fungerer med Prism eller er inkompatibel. Det er ikke officielt og kan blive forældet, men det er en nyttig reference før køb eller migrering.

Hvis du er nødt til at bruge kritisk software, der ikke tilbyder en Arm-rute på kort sigt, bør du overveje alternativer: progressive webversioner, UWP-udgaver eller tilsvarende klienter, eller endda køre softwaren i en ekstern VM eller x86-64 fjernskrivebord og få adgang til den fra din Arm-pc, indtil den native port ankommer.

Applikationer, der allerede er native på Arm: hvad du kan installere i dag

Kataloget vokser hurtigt. Microsoft har porteret sine primære apps (Teams, Word , Excel, Outlook, PowerPoint), og der er indbygget understøttelse i populære browsere og værktøjer. Med Windows 11 24H2 og Copilot+ PC har Chrome allerede en Arm-version , og det grundlæggende Chromium-projekt er også kompatibelt, hvilket åbner døren for de fleste afledte browsere.

For kreativitet og produktivitet findes der veletablerede muligheder: Adobe Photoshop og Lightroom er tilgængelige til Arm, og Adobe har annonceret native versioner af Premiere Pro og Illustrator. Du kan også arbejde med Blender, Affinity-pakken (Designer, Publisher, Photo), GIMP , LibreOffice eller endda DaVinci Resolve, der dækker alt fra fotoretouchering til redigering og modellering.

For multimedier og tjenester kører klienter som VLC , Netflix , Disney+, Spotify og Prime Video på Arm, enten som native apps eller via App Store. Dette native økosystem gør det muligt for hverdagsopgaver at udføres bedre og bruge mindre batteri sammenlignet med emulering.

  Måden at tillade Forstyr ikke, mens kørsel på iPhone

Nyere historie: fra x86-emulering i Windows 10 til x64 og Prism

I Windows 10 til Arm var emulering begrænset til 32-bit x86-applikationer. Senere tilføjede Microsoft x64-emulering i Insider-kanaler (for eksempel build 21277), et afgørende skridt i retning af at køre software, der allerede havde droppet 32-bit understøttelse.

Med Windows 11 blev x64-emulering mere etableret, og 24H2 introducerede Prism, som tilbyder hurtigere oversættelse og en lignende tilgang som Rosetta 2: problemfri kontinuitet, når økosystemet migrerer til Arm64-binære filer. I mange scenarier er den emulerede ydeevne god nok til daglig brug, selvom den native binære fil altid vil være det ultimative mål.

Udviklersti: Sådan bringer du din app til Arm64 (og Arm64EC)

Selvom Prism kan hjælpe dig ud af en knibe, tilbyder kørsel af din applikation på Arm64 hurtigere opstartstider , lavere ressourceforbrug og optimeret adgang til CPU, GPU og NPU . Den enkleste vej er med Visual Studio 2022 (v17.4 eller nyere), som native understøtter oprettelse og fejlfinding af Arm64-projekter på Arm-maskiner. Du kan også bruge Visual Studio 17.10 Preview og LLVM/Clang 12+, hvis du foretrækker den værktøjskæde.

Grundlæggende trin: tilføj en Arm64-konfiguration til din løsning (Configuration Manager, ny Arm64-platform kopiering fra x64), rekompilér, ret afhængighedsfejl og test på Arm-hardware eller i en Windows VM på Arm ved hjælp af lokal eller fjernfejlfinding. Hvis du vil verificere den binære fil, skal du køre dumpbin /headers .\<appname>.exe og søg i FILHEDERVÆRDIER efter strengen AA64-maskine (ARM64).

Når den er valideret, kompileres og tester den automatisk på Arm (CI/CD). For at publicere skal du tilføje Arm64-pakken til Microsoft Store eller din MSI/EXE/MSIX-kanal. Hvis du distribuerer via internettet, kan du bruge Client Hints User-Agent til at registrere Windows-enheder, der kører Arm, og vise dem det relevante installationsprogram i stedet for at stole på den klassiske brugeragentstreng.

Afhængigheder, der blokerer porten, er den mest almindelige hindring. Du har flere muligheder: rekompilere interne biblioteker , anmode om Arm64-buildet fra en tredjepart, tjekke vcpkg for porterede versioner eller endda bidrage til Arm-supporten af ​​disse projekter. Linaro tilbyder en Service Desk til at fremskynde porteringer i Arm-økosystemet, hvis det er nødvendigt.

Hvis det ikke er muligt at migrere alt til Arm64 på én gang, så overvej Arm64EC : det giver dig mulighed for at kompilere din primære app til Arm64, mens du stadig bruger x64-afhængigheder, der kører under emulering i den samme proces. Det er ikke muligt at blande rene Arm64-afhængigheder i en Arm64EC-proces, der forventer x64, men det kan være meget nyttigt som en overgang.

Glem ikke den arkitekturspecifikke kode: CPU-intrinsics og inline assembler skal omskrives til Arm eller indkapsles bag bærbare lag. Og hvis din app installerer drivere , skal du kompilere disse drivere native til Arm64 ved hjælp af WDK; der er ingen genveje med kernel-emulering.

Understøttede værktøjer og frameworks inkluderer .NET 7 og 6 (LTS), .NET 5.0.8+, .NET Framework 4.8.1 og clang-cl (MSVC-kompatibel ABI). For installatører understøtter frameworks som WiX, Squirrel, Inno Setup og InstallAware Windows on Arm uden problemer. Planlæg for funktionel paritet på tværs af arkitekturer for at undgå brugerforvirring.

Hvis du går i stå, tilbyder Microsoft App Assure Arm Advisory Service for at hjælpe med at optimere og løse problemer. Og som en god praksis bør du holde dine versioner justeret og automatisere test på Arm for at undgå at forstyrre kompatibiliteten i fremtidige udgivelser.

winget opgradering --all kommando
Relateret artikel:
Sådan opdaterer du alle programmer i Windows med winget upgrade –all-kommandoen