Arm 上的程序兼容性疑难解答

基于 Arm 的 PC 提供卓越的应用程序兼容性,并允许运行你现有的 x86 win32 应用程序而无需修改。 Arm 应用在本机运行且没有任何仿真,而 x86 和 x64 应用在 Arm 设备上在仿真下运行。

但是,有时仿真会执行不会导致最佳用户体验的优化。 可以使用 程序兼容性疑难解答 来切换 x86 或 x64 应用的仿真设置,减少默认优化并可能增加兼容性。

启动程序兼容性疑难解答

在任何 Windows 电脑上以相同的方式启动 程序兼容性疑难解答:右键单击可执行文件(.exe)文件,然后选择 兼容性疑难解答。 然后,可以选择 “尝试推荐设置 ”以测试使用推荐的兼容性设置运行程序,或 排除故障程序 ,以便根据你注意到的特定问题选择兼容性设置。

故障排除兼容性选项的屏幕截图。

如果选择 “故障排除程序”,可以选择:

  • 该程序在早期版本的 Windows 中工作,但不会立即安装或运行
  • 程序打开,但无法正确显示
  • 程序需要其他权限
  • 我没有看到我的问题被列出

所有选项都启用适用于并在 Windows 桌面电脑上应用的设置。 此外,第一个、第二个和第四个选项应用 Disable application cacheDisable hybrid execution mode 仿真设置。 (有关说明,请参阅下面的仿真设置表。

切换仿真设置

警告

更改仿真设置可能会导致应用程序意外崩溃或根本不启动。

可以通过右键单击可执行文件并选择 属性来切换仿真设置。

在 ARM 上,ARM 上标题为 “ARM 上的 Windows 10”“ARM 上的 Windows 11” 部分将在 “兼容性 ”选项卡中提供。选择 “更改仿真设置 ”以启动“仿真属性”窗口。

更改仿真设置屏幕截图

此仿真属性窗口提供了两种方法来修改仿真设置。 可以选择预定义的仿真设置组,或选择 “使用高级设置 ”选项来启用选择单个设置。

以下仿真设置可降低性能优化,有利于质量,并可用于在 Arm 上运行 Windows 时尝试测试 x86 或 x64 应用的兼容性。

更改仿真设置屏幕截图 2

选择 使用高级设置 来选择下表中所述的各个设置。

仿真设置 结果
禁用应用程序缓存 操作系统将缓存已编译的代码块,以减少后续执行的仿真开销。 此设置要求模拟器在运行时重新编译所有应用代码。
禁用混合执行模式 编译的混合可移植可执行文件(CHPE)是包含本机 Arm64 代码以提高性能的 x86 兼容二进制文件,但这可能与某些应用程序不兼容。 此设置强制使用仅限 x86 的二进制文件。
其他轻型仿真保护 一个影响易变元数据等内容的全面更新,在仿真环境中运行 x86 或 x64 应用时可能会影响性能。
严格的自我修改代码支持 启用此功能可确保仿真中正确支持任何自我修改代码。 默认模拟器行为涵盖了最常见的自我修改代码方案。 启用此选项可显著降低执行过程中自我修改代码的性能。
禁用 RWX 页面性能优化 此优化可提高可读、可写和可执行(RWX)页面上代码的性能,但可能与某些应用不兼容。
禁用 JIT 优化(仅限 x64 应用) 这不再使用,将在将来的疑难解答版本中删除。
禁用浮点优化(仅限 x64 应用) 选择此选项以模拟 x87 浮点达到完整的 80 位精度,但会带来性能损耗。 x87 是一种浮点协处理器,在某些较旧的 x86 处理器中使用比 32 位或 64 位格式更高的 80 位浮点格式执行浮点算术。

还可以更改应用程序使用多个 CPU 核心的方式,在快速、严格多核操作、非常严格或强制单核操作之间进行选择。 如果你注意到兼容性问题,请使用这些设置在 Arm 上运行 Windows 时测试你的应用仿真。

多核设置屏幕截图

这些设置更改了在模拟期间用于在应用中核心之间同步内存访问的内存屏障数。 快速 是默认模式,但 严格非常严格的 选项将增加障碍的数量。 这会降低应用速度,但会降低应用错误的风险。 单核 选项会消除所有障碍,但强制所有应用线程在单个核心上运行。

如果更改特定设置能够解决您的问题,请将详细信息发送电子邮件至woafeedback@microsoft.com,以便我们可以纳入您的反馈。