This tutorial will show you how to change the Windows on ARM emulation settings of apps for for your account or all users in Windows 10 and Windows 11.
PCs powered by ARM provide great application compatibility and allow you to run your existing unmodified x86 win32 applications. ARM apps run natively without any emulation, while x86 and x64 apps run under emulation on ARM devices.
However, sometimes the emulation performs optimizations that don't result in the best user experience. You can toggle emulation settings from the Properties page of apps.
This Emulations Properties window provides two ways to modify emulation settings. You may select a pre-defined group of emulation settings or select the Use advanced settings option to enable choosing individual settings.
Starting with Windows 11 build 26220.7051 (Dev and Beta), Microsoft is enabling the feature update to Prism, our emulator for Windows on Arm, that makes it possible for more 64-bit x86 (x64) applications to run under emulation by adding support for more CPU features under emulation. This support will be made available to any 64-bit x86 (x64) application under emulation by default, and 32-bit x86 applications can be opted in to the support using the emulation settings in the Properties window.
References:
Adjust Emulation Settings on Arm
How emulation works on Arm
Changing ARM emulation settings can fix compatibility issues with an app, but can make the app run slower.
Windows on ARM emulation settings are not available for Microsoft Store apps.
ARM emulation settings per app are saved to the registry keys below:
(current user)
HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers
OR
(all users)
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers
Here's How:
1 Right click or press and hold on the executable file (ex: EXE, MSI) or shortcut for the app you want to change Windows on ARM emulation settings for, and click/tap on Properties. (see screenshot below)
2 Do step 3 (current user) or step 4 (all users) below for which user(s) you want to apply this to.
You must be signed in as an administrator to use this option.
5 Check or uncheck (default) Hide emulation capability (x86 apps only) for what you want. (see screenshot below step 6)
This setting is only available starting with Windows 11 build 26220.7051 (Dev and Beta).
6 Check or uncheck (default) Show newer emulated CPU features for what you want. (see screenshot below)
This setting is only available starting with Windows 11 build 26220.7051 (Dev and Beta).
7 Do step 8 (recommended) or step 9 (advanced) below for how you want to change emulation settings.
These settings change the number of memory barriers used to synchronize memory accesses between cores in apps during emulation. Fast is the default mode, but the strict and very strict options will increase the number of barriers. This slows down the app, but reduces the risk of app errors. The single-core option removes all barriers but forces all app threads to run on a single core.
Emulation setting | Result |
|---|---|
| Disable application cache | The operating system will cache compiled blocks of code to reduce emulation overhead on subsequent executions. This setting requires the emulator to recompile all app code at runtime. |
| Disable hybrid execution mode | Compiled Hybrid Portable Executable (CHPE), binaries are x86 compatible binaries that include native Arm64 code to improve performance, but that may not be compatible with some apps. This setting forces use of x86-only binaries. |
| Additional lightweight emulation protections | A catch-all update affecting things like volatile metadata which can impact performance when running an x86 or x64 app in emulation. |
| Strict self-modifying code support | Enable this to ensure that any self-modifying code is correctly supported in emulation. The most common self-modifying code scenarios are covered by the default emulator behavior. Enabling this option significantly reduces performance of self-modifying code during execution. |
| Disable RWX page performance optimization | This optimization improves the performance of code on readable, writable, and executable (RWX) pages, but may be incompatible with some apps. |
| Disable JIT optimization (x64 apps only) | This is no longer used and will be removed in future versions of the Troubleshooter. |
| Disable floating point optimization (x64 apps only) | Check to emulate x87 floating point at a full 80-bit precision, but at a performance cost. x87 is a floating-point coprocessor used in some older x86 processors to perform floating-point arithmetic using an 80-bit floating point format with higher precision than the 32-bit or 64-bit format. |
10 Click/tap on OK. (see screenshots below)
That's it,
Shawn Brink











