Arm 上的程式相容性疑難排解員
由 Arm 支援的電腦也提供絕佳的應用程式相容性,並可讓您執行現有的未修改 x86 win32 應用程式而無需修改。 Arm 應用程式以原生方式執行,而沒有任何模擬,而 x86 和 x64 應用程式則以模擬方式在 Arm 裝置上執行。
不過,有時候模擬會執行不會促進最佳使用者體驗的最佳化。 您可以使用 程式相容性疑難排解員來切換 x86 或 x64 應用程式的模擬設定,減少預設最佳化,並可能地增加相容性。
啟動程式相容性疑難排解員
您可以在任何 Windows 電腦上以相同方式手動啟動程式相容性疑難排解員 :以滑鼠右鍵按一下可執行檔 (.exe) 檔案,然後選取 [疑難排解相容性]。 接著,您可以選擇 [嘗試建議的設定],以使用建議的相容性設定來測試執行程式,或根據您注意到的特定問題選擇相容性設定,針對程式進行疑難排解。
如果選取 [疑難排解程式],您可以選擇:
- 程式在舊版 Windows 中運作,但不會立即安裝或執行
- 程式隨即開啟,但未正確顯示
- 程式需要額外的權限
- 我沒看到有列出我的問題
所有選項都會啟用 Windows 桌面電腦上適用及套用的設定。 此外,第一、第二和第四個選項會套用 Disable application cache
和 Disable hybrid execution mode
模擬設定。 (如需說明,請參閱下方的模擬設定表。)
切換模擬設定
警告
變更模擬設定可能會導致應用程式意外當機或完全無法啟動。
您可以用滑鼠右鍵按下可執行檔,並選取 [屬性] 來切換模擬設定。
在 ARM 上,標題為 ARM 上的 Windows 10 或 ARM 上的 Windows 11 區段將在 [相容性] 索引標籤中取得。選取 [變更模擬設定] 以啟動模擬屬性視窗。
此模擬屬性視窗提供兩種方式來修改模擬設定。 您可以選取預先定義的模擬設定群組,或選取 [使用進階設定 ] 選項來啟用選擇個別設定。
下列模擬設定可降低效能最佳化,以利於品質,並可用來在 Arm 上的 Windows 上執行時測試 x86 或 x64 應用程式的相容性。
選取 [使用進階設定] 來選擇下表所述的個別設定。
模擬設定 | 結果 |
---|---|
停用應用程式快取 | 作業系統會快取編譯的程式碼區塊,以減少後續執行的模擬額外負荷。 這個設定需要模擬器在執行階段重新編譯所有應用程式的程式碼。 |
停用混合式執行模式 | 編譯的混合式可攜式可執行檔 (CHPE), 二進位檔是 x86 相容的二進位檔,其中包含原生 Arm64 程式碼以改善效能,但有可能會與某些應用程式不相容。 此設定會強制使用僅限 x86 的二進位檔。 |
其他輕量型模擬保護 | 攔截式更新會影響揮發性中繼資料等項目,在模擬中執行 x86 或 x64 應用程式時可能會影響效能。 |
嚴格自我修改程式碼支援 | 啟用此選項,確保模擬中正確支援任何自我修改程式碼。 預設模擬器行為涵蓋最常見的自我修改程序碼案例。 啟用此選項可大幅降低執行期間自我修改程式碼的效能。 |
停用 RWX 頁面效能最佳化 | 此最佳化可改善可讀取、可寫入和可執行檔 (RWX) 頁面上的程式碼效能,但有可能會與某些應用程式不相容。 |
停用 JIT 最佳化 (僅限 x64 應用程式) | 這已不再使用,並將在未來版本的疑難排解員中移除。 |
停用浮點最佳化 (僅限 x64 應用程式) | 檢查以完整的 80 位元精確度模擬 x87 浮點,但以效能成本計算。 x87 是一種浮點副處理器,用於某些較舊的 x86 處理器,使用 80 位元浮點數格式執行浮點算術,精確度高於 32 位元或 64 位元格式。 |
您也可以變更應用程式使用多個 CPU 核心的方式,在快速、嚴格多核心作業、非常嚴格或強制單一核心作業之間做選擇。 如果發現相容性問題,請使用這些設定在 Arm 上執行 Windows 時測試您的應用程式模擬。
這些設定會變更在模擬期間用來同步處理應用程式中核心間記憶體存取的記憶體屏障數。 快速 是預設模式,但 嚴格且非常嚴格的選項會增加屏障數。 這會讓應用程式變慢,但可降低應用程式錯誤的風險。 單一核心選項會移除所有屏障,但會強制所有應用程式執行緒在單一核心上執行。
如果變更特定設定可解決您的問題,請以電子郵件 woafeedback@microsoft.com 傳送詳細資料,我們才能納入您的意見反應。