Prism を使って Windows 86 ARM に x64 および x11 アプリをインストールする: 互換性、制限、回避策の完全ガイド

最終更新: 10/09/2025
  • Windows 11 ARM は Prism (86H64) を使用して x24 および x2 をエミュレートし、パフォーマンスと CPU 使用率を向上させます。
  • すべてがエミュレートされるわけではありません。 ドライバー、シェル拡張、および制限された動的コードにはネイティブ Arm64 が必要です。
  • 互換性を高める微調整(キャッシュ、CHPE、マルチコア、SMC)があります。 apps 矛盾している。
  • 最適なパスは、VS 64 を使用して Arm64/Arm2022EC に移植し、パリティを維持しながらネイティブ バイナリを公開することです。

Windows 86 ARM での x11 エミュレーション

ARMプロセッサを搭載した新しいPC(Snapdragon X搭載のCopilot+など)を購入したばかりなら、おそらくどのようにPCを動かすか疑問に思うでしょう。 x86およびx64アプリケーション Windows 11 ARM 互換性を失うことなく。その答えは、システムに組み込まれたエミュレーションと、最近では新しい翻訳レイヤーであるPrismにあります。 ウィンドウズ11 24H2 これにより、エクスペリエンスが高速化され、向上します。

このガイドでは、エミュレーションの仕組み、その限界、そしてx64インストーラーがなぜ続行を拒否するのかについて分かりやすく説明します。また、あまり知られていない互換性調整についても解説します。 実際の失敗の具体的な例、Arm にネイティブなアプリのレビュー、および Visual Studio または LLVM を使用して Arm64 でコンパイルしたい開発者向けの移行パスについて説明します。

Arm 上の Windows 11 のエミュレーションとは何ですか?

Windows 11 for Armには、実行を可能にする変換レイヤーが含まれています。 x86 および x64 アプリは変更なし. Windows ARMとx86の比較

エミュレーションは「透過的」です。つまり、オペレーティングシステムの一部であり、追加のインストールは必要ありません。エミュレータは内部的に実行時にコンパイル(JIT)されます。 x86/x64からarm64への命令ブロック最適化を適用することで、優れたネイティブコードを生成します。システムサービスはモジュールごとにこれらの変換済みブロックのキャッシュを維持するため、アプリを再度開いたときに変換のオーバーヘッドが大幅に削減されます。

x86プロセスに関しては、よく知られているWOW64レイヤーが役立ちます。x64システムと同様に、WOW64はx86バイナリを64ビット環境で実行することを可能にし、Windows on Armの場合はさらに以下の機能も追加します。 ファイルシステムとレジストリのリダイレクト x86プロセスを適切に分離するために必要です。x64の場合は状況が異なります。中間のWOW64は存在せず、WindowsはARM64X PE形式のシステムバイナリを使用します。このバイナリはarm64プロセスとx64プロセスの両方に同じ場所からロードできるため、リダイレクトを回避し、システムへの一貫したアクセスを確保できます。

重要な点があります。エミュレーションは ユーザーモードコードカーネルモードドライバ、UMDF、その他カーネルに関連するコンポーネントは、Arm64向けにネイティブにコンパイルする必要があります。アプリケーションがArm向けに存在しないドライバに依存している場合、エミュレーションではその部分を保護できません。

Windows 11 ARM 上の Prism

Prism: Windows 11 24H2 向けの新しい翻訳レイヤー

Windows 11 24H2には、以前の技術を置き換える新しいエミュレーターであるPrismが搭載されています。 パフォーマンスとCPU使用率の大幅な最適化マイクロソフトは、同じ期間で10%から20%の改善を予定している。 ハードウェア 24H2 をインストールすると、読み込み時間、UI の流動性、電力消費が改善されます。

PrismはQualcommのデスクトッププロセッサ、特にCopilot+ PCに搭載されているSnapdragon Xシリーズ向けに高度に調整されています。一部の高度な最適化は特定のハードウェア機能に依存しますが、 PrismはWindows 11対応デバイスなら24時間いつでも利用可能です Arm 上で実行され、この移行中にネイティブ アプリとエミュレートされたアプリが共存するパスを示します。

哲学は、 Rosetta 2Mac Apple Silicon との提携:開発者が Arm 向けのネイティブバージョンをリリースする一方で、x86-64 エコシステムの継続性を確保することを目的としています。Microsoft は Prism のパフォーマンスが競争力を持つと確信しており、Arm64 アプリのカタログが増えるにつれて、エミュレーションの必要性は自然に減少するでしょう。

システムがエミュレーションを検出する方法とアプリが認識するもの

x86/x64アプリは通常、特定のAPIをクエリしない限り、Arm PC上で実行されていることを「認識」しません。 IsWow64Process2例えば、WOWで動作しているかどうか、またどのアーキテクチャで動作しているかを確認できます。API経由でCPUの詳細を問い合わせると、システムはエミュレートされたプロセッサからデータを返します。互換性のために、 ネイティブシステム情報を取得する エミュレーション中のプロセスから呼び出された場合、仮想化された値を提供することもできます。

  Windows 11でフォルダのデザインとアイコンを変更する方法

アプリからホストの機能を知る必要がある場合は、 マシンタイプ属性の取得 システムがエミュレーションをサポートしているかどうか、またどのような種類のエミュレーションをサポートしているかを確認します。これは、アーキテクチャ上の想定によるエラーを生じさせることなく互換性を判断するために、Microsoftが推奨する方法です。

x64 アプリがインストールに失敗する理由や、エミュレーションが失敗するその他のケース

よくある質問:「Prism搭載のWindows 11 24H2を使用していますが、x64インストーラーでシステムが互換性がないと表示されます。」これは、例えば、 Mechdyne TGXスコープ Surface Pro 11 で発生します。原因は通常、インストーラー自体にあります。インストーラーはアーキテクチャチェックを実装しており、アプリのバイナリを実行する前にクラッシュします。パッケージが「自己破棄」を決定した場合、エミュレーションはこのインストール前のロジックをインターセプトしません。

エミュレーションが失敗したり、不十分になるシナリオは他にもあります。アプリが カーネルモードドライバー (エミュレートされていない)システムアーキテクチャに適合する必要があるシェル拡張機能やIMEを挿入する場合、またはインストーラーにシステムプロセス内で読み込まれるコンポーネントが含まれており、アーキテクチャの混在が不可能な場合。これらの場合、メインの実行ファイルがエミュレート可能であっても、依存関係によってインストールが完了しません。

もう一つの既知のブロックは、動的コードセキュリティポリシーです。x86アプリケーションのエミュレーションは、 リアルタイム ARM64 コードx86プロセスが緩和策をトリガーした場合 ProcessDynamicCodePolicy 介して SetProcessMitigationPolicy JITコードの生成や変更を防ぐため、x86アプリはArm64エミュレーションでは実行できません。このポリシーを無効にすることで解決できます。

最後に、一部のインストーラーは、WOWを検出すると、 「クラシック」x64システム パッケージのx64ブランチを強制的に使用していますが、Armではその方法では使用できません。このパターンは悪い習慣とみなされています。WOWの存在のみからネイティブアーキテクチャを推測するのではなく、常にIsWow64Process2を参照することが推奨されます。

Windows ARMの互換性とエミュレーション設定

あまり知られていない味方:互換性ソルバーとエミュレーション設定

Windows on Armには、 エミュレーションの微調整 パフォーマンスが多少低下する代わりに、互換性が向上する可能性があります。.exe のコンテキストメニュー(右クリックして「互換性のトラブルシューティング」を選択)から「プログラム互換性トラブルシューティング」を起動し、推奨設定を試すか、発生した問題を報告するかを選択できます。

「プログラムの問題のトラブルシューティング」を選択すると、「以前のバージョンでは動作していたが、今は動作しない」「開くことはできるが、見た目が悪い」「追加の権限が必要」といったオプションが表示されます。これらのオプションのいくつかは、以下の2つの強力なエミュレーション調整を自動的に適用します。 アプリケーションキャッシュを無効にする (変換されたブロックキャッシュの使用を避ける)そして ハイブリッド実行モードを無効にする (CHPE を無効にし、x86 専用のバイナリを強制します)。

さらに、実行ファイルのプロパティの互換性タブには、Armの「Windows 10 on ARM」または「Windows 11 on ARM」の特定のセクションが表示され、ボタン 「エミュレーション設定を変更する」そこから、事前定義されたセットを適用したり、詳細オプションを個別に有効にしたりできます。

最も関連性の高いオプションは次のとおりです: 無効にする アプリケーションキャッシュ (実行ごとにすべてを再翻訳する)無効 CHPEハイブリッドモード (x86+Arm64互換バイナリが非互換性をもたらす場合に便利)、有効にする 追加の光保護、 要求 自己修正コードとの厳密な互換性 (パフォーマンスを犠牲にしてより多くのSMCパターンをサポートする)または無効にする RWXページ最適化x64 アプリには、速度を犠牲にして精度を最大限に高めるために、87 ビットで x80 浮動小数点をエミュレートするスイッチもあります。

のセクション 複数のコアの使用 「高速」、「厳格」、「非常に厳格」、「シングルコア強制」から選択できます。設定が厳格になるほど、同期のためにメモリバリアが多く導入され、微妙な競合状態のリスクは低くなりますが、パフォーマンスは低下します。「高速」でアプリが不安定な場合は、「厳格」を試してください。特定のオプションで問題が解決した場合は、Microsoft にフィードバックを送信してください。 [メール保護] それらをエミュレーターに組み込むため。

  ARM 上の Windows 11: Microsoft は、ユーザーが現在、時間の 90% をネイティブ ソフトウェアの使用に費やしていると発表しました。

WOWと検出におけるベストプラクティス:誤った仮定を避ける方法

多くの問題は、WOWの検出時に誤った仮定から生じます。WOWが動作していることを検出したアプリは、ホストが従来のx64であると結論付けるべきではありません。Armでは、その状態はエミュレーションを意味し、 レジストリビューただし、フレームワークやシステム パスの存在は、x86-64 PC の場合と同等ではありません。

よくある間違い:ソフトウェアを強制的にインストールする x64版 WOWが検出された場合は、抽象化されたAPIを使用する代わりに、レジストリの「ネイティブ」ビューでキーを検索するか、ホストで64ビット.NETが利用可能であると想定してください。IsWow64Process2を照会し、パスを適切に解決するWindows関数を使用し、ホストプロセスのアーキテクチャに依存するコードを避けることをお勧めします。

ドライバー、シェル拡張、仮想化: ネイティブ Arm64 が必要な場合

カーネルに関わるドライバ(カーネルモードドライバ、UMDF、プリンタドライバなど)は、次のようにコンパイルする必要がある。 ネイティブArm64カーネルにはエミュレーションがありません。これは、仮想化や、キャプチャドライバ、低レベルのウイルス対策、ファイルフィルタをインストールするアプリなどのシナリオに影響します。

Windowsプロセス内でDLLを読み込むシェル拡張機能、IME、支援技術も、システムのアーキテクチャに適合している必要があります。アプリケーションがエクスプローラーと統合するためにx86 DLLを登録する場合、Armでは Arm64に再コンパイルする必要がある.

上の 仮想マシンチップセットの制限があります。例えば、Windowsハイパーバイザープラットフォームはサポートされていません。 Qualcomm 835プラットフォームそのため、Hyper-V はそこでは動作しません。Microsoft は、将来の世代に向けて互換性の拡張に投資し続けることを示唆しています。

ユーザー向けの実用的なヒント: インストール、テスト、解決

まず、Windows 11 24H2を使用していることを確認してください。 Prismがパフォーマンスを向上 互換性の問題も修正します。x64インストーラーが進まない場合は、ネイティブArm64版またはMSIX/Store版を探してください。多くの最新アプリは、適切なアーキテクチャを選択するクロスプラットフォームパッケージを既に提供しています。システムにプリロードされたソフトウェアが含まれている場合は、 プリインストールされたアプリやブロートウェアを削除する インストールと診断を簡素化します。

x86/x64インストーラーしかない場合は、互換性ソルバーを実行してエミュレーションを調整してください(キャッシュを無効にし、CHPEを無効にし、マルチコアの厳密性を高めます)。アプリが ドライバーが必要 またはシェル拡張機能を挿入する場合は、おそらくそれらのコンポーネントの Arm64 固有のバージョンが必要になります。

アプリが動作するかどうかを判断するために、コミュニティは「Windows on ARM」などのカタログを管理しており、アプリが 完全サポート、Prismと連携 または互換性がありません。公式の情報ではないため、情報が古くなっている可能性がありますが、購入や移行前に参考にしていただければ幸いです。

短期的にArmパスを提供していない重要なソフトウェアを使用する必要がある場合は、代替案を検討してください。プログレッシブWebビルド、UWPエディションまたは同等のクライアント、あるいはソフトウェアを リモートVM または、ネイティブ ポートが到着するまで、x86-64 リモート デスクトップを使用して Arm PC からアクセスします。

Armネイティブのアプリケーション:今すぐインストールできるもの

カタログは急速に成長しています。マイクロソフトはコアアプリ(Teams、 Word、Excel、Outlook、PowerPointなど)に対応しており、一般的なブラウザやツールもネイティブサポートされています。Windows 11 24H2とCopilot+ PCがあれば、 ChromeにArmバージョンが登場また、ベースの Chromium プロジェクトもサポートされているため、ほとんどの派生ブラウザへの扉が開かれます。

創造性と生産性には成熟した選択肢があります。 Adobe Photoshop とLightroom Arm対応のアプリが利用可能で、AdobeはPremiere ProとIllustratorのネイティブバージョンを発表しました。また、Blender、Affinityスイート(Designer、Publisher、Photo)も利用可能です。 GIMP、LibreOffice、さらには DaVinci など、写真のレタッチから編集やモデリングまであらゆるものをカバーします。

マルチメディアやサービスの場合、次のようなクライアントが VLC, Netflix、ディズニー+、 Spotifyは またはPrime Videoは、ネイティブアプリとして、またはストア経由でArm上で動作します。このネイティブエコシステムにより、エミュレーションと比較して、日常的なタスクのパフォーマンスが向上し、バッテリー消費も抑えられます。

  PowerPointでリストを追加する方法:コツ満載の完全ガイド

最近の履歴: Windows 86 の x10 エミュレーションから x64 と Prism へ

Windows 10 for Armでは、エミュレーションは86ビットx32アプリケーションに限定されていました。その後、Microsoftは x64エミュレーション Insider チャネル (ビルド 21277 など) では、すでに 32 ビット サポートを放棄していたソフトウェアの実行に根本的に移行します。

Windows 11ではx64エミュレーションが統合され、24H2ではPrismが導入され、 より速い翻訳 Rosetta 2のようなアプローチ:エコシステムがArm64バイナリに移行しても、摩擦のない継続性を維持します。多くのシナリオでは、エミュレートされたパフォーマンスは日常的な使用には十分ですが、目標は常にネイティブバイナリです。

開発者パス: アプリを Arm64 (および Arm64EC) に移植する

Prism を使用すると、手間は省けますが、アプリケーションを Arm64 に移植すると、実行時間が向上します。 ブーツ消費量とアクセスの低下 CPU、GPU、NPU 最適化されています。Armマシン上でArm2022プロジェクトのビルドとデバッグをネイティブにサポートするVisual Studio 17.4(v64以降)を使えば、パスは簡単です。また、Visual Studio 17.10 PreviewとLLVM/Clang 12+のツールチェーンをご希望の場合は、そちらもご利用いただけます。

基本的な手順: Arm64構成 ソリューション(Configuration Manager、x64からコピーした新しいArm64プラットフォーム)に再コンパイルし、依存関係エラーを修正し、ArmハードウェアまたはArm上のWindows VMでローカルまたはリモートデバッグを使用してテストします。バイナリを検証する場合は、以下を実行します。 dumpbin /headers .\<appname>.exe そして、FILE HEADER VALUESで文字列を検索します。 AA64 マシン (ARM64).

検証が完了したら、Arm上で自動的にコンパイルとテストを行います(CI/CD)。公開するには、Arm64パッケージをMicrosoft StoreまたはMSI/EXE/MSIXチャネルに追加してください。Webから配布する場合は、 クライアントヒントユーザーエージェント 従来のユーザーエージェント チェーンに頼るのではなく、Arm 上の Windows デバイスを検出し、適切なインストーラーを提供します。

移植をブロックする依存関係が最も一般的な障害です。いくつかの選択肢があります。再コンパイル 内部ライブラリサードパーティのArm64ビルドをリクエストしたり、既に移植済みのvcpkgバージョンを確認したり、あるいはご自身でこれらのプロジェクトのArmサポートに貢献したりすることも可能です。Linaroは、必要に応じてArmエコシステムへの移植を加速するためのサービスデスクを提供しています。

すべてをArm64に移行するのが不可能な場合は、 アーム64EC: メインアプリをArm64向けにコンパイルしながら、同じプロセス内でエミュレーション実行されるx64依存関係を利用できるようになります。x64を前提とするArm64ECプロセスに純粋なArm64依存関係を混在させることはできませんが、移行手段として非常に役立ちます。

アーキテクチャ固有のコードを忘れないでください。CPUの組み込み関数とインラインアセンブラはArm用に書き直すか、ポータブルレイヤーの背後にカプセル化する必要があります。そして、アプリが ドライバーをインストールする、WDK を使用してこれらのドライバーを Arm64 用にネイティブにコンパイルする必要があります。カーネル内エミュレーションにはショートカットはありません。

サポートされているツールとフレームワークには、.NET 7および6(LTS)、.NET 5.0.8+、.NET Framework 4.8.1、および カラン、カラン (MSVC互換ABI)。インストーラーについては、WiX、Squirrel、Inno Setup、InstallAwareなどのフレームワークがWindows on Armを問題なくサポートしています。ユーザーの混乱を避けるため、アーキテクチャ間で機能の整合性を確保してください。

困ったらマイクロソフトが App Assure Armアドバイザリサービス クラッシュの最適化と解決に役立ちます。また、ベストプラクティスとして、将来のリリースで互換性が損なわれないように、バージョンを揃え、Armでのテストを自動化してください。

winget アップグレード --all コマンド
関連記事:
winget upgrade –all コマンドを使用して Windows のすべてのアプリケーションを更新する方法