64 ビット バージョンの 32 ビット プログラムの互換性に関する考慮事項Windows

この記事では、64 ビット バージョンの Windows で実行されている 32 ビット プログラムの互換性に関する考慮事項と制限事項について説明します。

適用対象:  Windows 10 – すべてのエディション、Windows Server 2012 R2
元の KB 番号:   896456

概要

64 ビット バージョンの Windows では、Microsoft Windows-32-on-Windows-64 (WOW64) サブシステムを使用して、変更なしで 32 ビット プログラムを実行します。 64 ビット バージョンの Windows 16 ビット バイナリまたは 32 ビット ドライバーのサポートは提供されていません。 16 ビット バイナリまたは 32 ビット ドライバーに依存するプログラムは、プログラムの製造元がプログラムの更新プログラムを提供しない限り、Windows の 64 ビット バージョンでは実行できない。

プログラムの互換性やパフォーマンスに影響を与える考慮事項がある場合があります。 プログラムに互換性またはパフォーマンスの問題が発生するかどうかを判断するには、64 ビット バージョンのプログラムの 1 つでプログラムをテストWindows。

この記事では、64 ビット バージョンのプログラムで 32 ビット プログラムを実行する際の互換性に関する考慮事項について説明Windows。 この記事では、32 ビットバージョンと 64 ビット バージョンの Windows、または異なる 64 ビット オペレーティング システムを比較します。 この記事では、32 ビット バイナリと 64 ビット バイナリの違いを理解している必要があります。

はじめに

x64 ベースのバージョンの Microsoft Windows、ネイティブの 64 ビット プログラムを実行するために最適化されています。 さらに、x64 ベースのバージョンWindows WOW64 サブシステムを使用して 32 ビット プログラムを実行します。

32 ビット プログラムの実行

WOW64 サブシステムを使用すると、x64 ベースのバージョンのプログラムを変更せずに 32 ビット プログラムを実行Windows。 WOW64 サブシステムは、x64 ベースのバージョンのデバイスに 32 ビット環境をWindows。 WOW64 サブシステムの詳細については、Microsoft プラットフォーム SDK のドキュメントの「64 ビット Windows」の「32 ビット アプリケーションの実行」を参照してください。 このドキュメントを表示するには、次の Microsoft Web サイト: 32 ビット アプリケーションの実行にアクセスします。

プログラムのパフォーマンスに関する考慮事項

WOW64 サブシステムは、x64 ベースのバージョンのアプリケーションに 32 ビット環境をWindows。 一部の 32 ビット プログラムは、これらのオペレーティング システムでは、32 ビット バージョンのオペレーティング システムに比Windows。 または、多くのメモリを必要とする一部の 32 ビット プログラムでは、x64 ベースのバージョンのメモリのパフォーマンスが向上Windows。 このパフォーマンスの向上は、x64 ベースのバージョンの Windows が 32 ビット バージョンの Windows よりも多くの物理メモリをサポートしている場合に発生します。

64 ビット バージョンと 32 ビット バージョンの Windows のメモリ管理の違いの詳細については、Microsoft プラットフォーム SDK のドキュメントの「About Memory Management」の「Virtual Address Space」トピックを参照してください。 このドキュメントを表示するには、次の Microsoft Web サイト: Virtual Address Space を参照してください。

WOW64 サブシステムの制限

WOW64 サブシステムでは、次のプログラムはサポートされていません。

  • 16 ビット オペレーティング システム用にコンパイルされたプログラム
  • 32 ビット オペレーティング システム用にコンパイルされたカーネル モード プログラム

16 ビット プログラム

x64 ベースのバージョンの Windows 16 ビット プログラムまたは 16 ビット プログラム コンポーネントはサポートされていません。 x64 ベースのバージョンのアプリケーションで 16 ビット プログラムを実行するために必要Windowsエミュレーションは、それらのプログラムのパフォーマンスを大幅に低下させます。

32 ビット プログラムのインストールと構成には、16 ビット インストーラーが頻繁に使用されます。 さらに、一部の 32 ビット プログラムでは、正しく実行するために 16 ビット コンポーネントが必要です。 16 ビット コンポーネントを必要とする 32 ビット プログラムは、インストール後に正しく実行される場合があります。16 ビット インストーラーを使用して 32 ビット プログラムをインストールすることはできません。 16 ビット コンポーネントを必要とするプログラムは、x64 ベースのバージョンの Windows。

16 ビット コンポーネントを必要とする 32 ビット プログラムが 16 ビット ファイルまたはコンポーネントの実行を試みる場合、32 ビット プログラムはシステム ログにエラー メッセージを記録します。 その後、オペレーティング システムは 32 ビット プログラムがエラーを処理します。

プログラムに 16 ビット コンポーネントが必要かどうかを判断するには、プログラムをインストールして実行します。 プログラムがエラー メッセージを生成する場合は、プログラムの製造元に問い合わせ、x64 ベースのバージョンの更新プログラムと互換性Windows。

32 ビット ドライバー

x64 ベースのバージョンの Windows 32 ビット ドライバーはサポートされていません。 すべてのハードウェア デバイス ドライバーとプログラム ドライバーは、x64 ベースのバージョンのデバイス ドライバー専用にコンパイルするWindows。

32 ビット プログラムが x64 ベースバージョンの Windows を実行しているコンピューターに 32 ビット ドライバーをインストールしようとすると、ドライバーのインストールは失敗します。 この動作が発生すると、x64 ベースのバージョンWindows 32 ビット プログラムにエラーが報告されます。

32 ビット プログラムが、x64 ベースのバージョンの Windows を実行しているコンピューターで自動起動用に 32 ビット ドライバーを登録しようとすると、コンピューター上のブートストラップ ローダーは、32 ビット ドライバーがサポートされていないと認識します。 x64 ベースのバージョンの Windows 32 ビット ドライバーは起動しないが、他の登録済みドライバーは起動します。

プログラムに 32 ビット ドライバーが必要かどうかを判断するには、プログラムをインストールして実行します。 プログラムがエラー メッセージを生成する場合は、プログラムの製造元に問い合わせ、x64 ベースのバージョンの更新プログラムと互換性Windows。

その他の考慮事項

レジストリとファイルのリダイレクト

WOW64 サブシステムは、レジストリ呼び出しと一部のファイル システム呼び出しをリダイレクトすることで、32 ビット バイナリを 64 ビット バイナリから分離します。 WOW64 サブシステムはバイナリを分離し、32 ビット バイナリが 64 ビット バイナリから誤ってデータにアクセスしないようにします。 たとえば、%systemroot%\System32 フォルダーから .dll ファイルを実行する 32 ビット バイナリは、32 ビット バイナリと互換性がない 64 ビット .dll ファイルに誤ってアクセスしようとする可能性があります。 これを防ぐために、WOW64 サブシステムは%systemroot%\System32 フォルダーから %systemroot%\SysWOW64 フォルダーにアクセスをリダイレクトします。 このリダイレクトは、32 ビット プログラムで動作するように.dllファイルを特別に設計する必要があるため、互換性エラーを防止します。

ファイル システムとレジストリ のリダイレクトの詳細については、Microsoft プラットフォーム SDK のドキュメントの「64 ビット Windows」の「32 ビット アプリケーションの実行」を参照してください。 このドキュメントを表示するには、次の Microsoft Web サイト: 32 ビット アプリケーションの実行にアクセスします。
WOW64 サブシステムは、32 ビット バイナリへの変更を必要とせずに 32 ビット バイナリ呼び出しをリダイレクトします。 ただし、一部のタスクを実行すると、このリダイレクトの証拠が表示される場合があります。 たとえば、64 ビットのコマンド プロンプトでコマンド ライン スクリプトを入力すると、コマンド プロンプトは Program Files フォルダーの 32 ビット プログラムにアクセスできない場合があります。 WOW64 サブシステムは、プログラム ファイル (x86) フォルダーに 32 ビット プログラムをリダイレクトしてインストールします。 正しいフォルダーにアクセスするには、コマンド ライン スクリプトを変更する必要があります。 または、32 ビットコマンド プロンプトでコマンド ライン スクリプトを入力する必要があります。 32 ビットコマンド プロンプトは、ファイル システム呼び出しを正しい 32 ビット ディレクトリに自動的にリダイレクトします。

32 ビットのコマンド プロンプトを開始するには、次の手順を実行します。

  • [ スタート] ボタン をクリック し、[実行] をクリックし 、「%windir%」と 入力\SysWoW64\cmd.exe、[OK] を クリックします

バージョンチェック

一部の 32 ビット プログラムは、オペレーティング システムのバージョン情報を調べる。 このチェックを実行する多くの 32 ビット プログラムは、互換性のあるオペレーティング システムとして x64 ベースのバージョンWindows認識します。 この動作が発生すると、32 ビット プログラムはバージョン チェック エラーを生成し、閉じます。 この動作が発生した場合は、32 ビット プログラムの製造元に問い合わせ、x64 ベースのバージョンの Windows と互換性のある更新プログラムを提供してください。

Microsoft .NET Framework。

次の条件に当てはまる場合、Microsoft .NET Frameworkでコンパイルされたプログラムは、WOW64 サブシステムで 32 ビット プログラムとして実行されます。

  • プログラムには、ヘッダー情報に ILONLY ビットが設定されています。
  • プログラムは、Microsoft バージョン 1.1 .NET Frameworkコンパイルされています。 プログラムにヘッダー情報に ILONLY ビットが設定されていない場合、またはプログラムが Microsoft .NET Framework バージョン 2.0 でコンパイルされた場合、プログラムはネイティブの 64 ビット プログラムとして実行されます。

OpenGL

x64 ベースのバージョンWindows OpenGL グラフィックス ドライバーは含めれません。 x64 ベースのバージョンのデバイスと互換性のあるドライバーについては、デバイスの製造元に問い合Windows。

Microsoft 管理コンソール (MMC)

x64 ベースのバージョンWindows 64 ビット バージョンの Microsoft 管理コンソール (MMC) を使用して、さまざまなスナップインを実行します。ただし、WOW64 サブシステムでスナップインを実行するために 32 ビット バージョンの MMC が必要な場合があります。 x64 ベースのバージョン Windows での MMC の動作の詳細については、Microsoft プラットフォーム SDK のドキュメントの「MMC 2.0 の使用」の「64 ビット Windows で 32 ビットおよび 64 ビット スナップインを実行する」を参照してください。 このドキュメントを表示するには、次の Microsoft Web サイトを参照してください。64ビット モードで 32 ビットおよび 64 ビット スナップインを実行Windows

x64 に関する考慮事項

x64 ベースのバージョンの Windows 32 ビット命令と 64 ビット命令がサポートされています。 WOW64 サブシステムは、プロセッサのネイティブ モードを切り替えて、ネイティブ 64 ビット モードで 32 ビット プログラムを実行できます。 個別のハードウェア層またはソフトウェア 層は必要ありません。 x64 ベースのバージョンのアプリケーションで 32 ビット プログラムを実行すると、パフォーマンスが低下Windows。

x64 ベースのプロセッサのパフォーマンスの詳細については、プロセッサの製造元に問い合わせ、または製造元の Web サイトを参照してください。 このドキュメントの情報とソリューションは、発行日現在のこれらの問題に関する Microsoft Corporation の現在のビューを表しています。 このソリューションは、Microsoft またはサード パーティプロバイダーを通じて利用できます。 Microsoft は、この記事で説明する可能性があるサードパーティ プロバイダーまたはサード パーティのソリューションを特に推奨しません。 また、この記事では説明していない他のサード パーティ プロバイダーやサード パーティのソリューションが存在する場合があります。 Microsoft は市場の状況の変化に対応する必要があります。この情報は、Microsoft によるコミットメントと解釈される必要があります。 Microsoft は、Microsoft または前述のサードパーティ プロバイダーによって提示される情報またはソリューションの正確性を保証または保証することはできません。

Microsoft は、明示、黙示、または法定にかかわらず、いかなる表明、保証、条件も一切保証しません。 これらには、サービス、ソリューション、製品、その他の資料や情報に関して、タイトル、非侵害、満足のいく条件、商品性、特定の目的への適性に関する表明、保証、または条件が含まれますが、これらに限定されるものではありません。 この記事で言及しているサードパーティのソリューションに対して、Microsoft は一切責任を負う必要はありません。

関連情報

AMD64 プロセッサの詳細については、次の Advanced Micro Devices Web サイト: AMD Web サイトを参照してください。
他社テクニカル サポートのお問い合わせ窓口は、ユーザーの便宜のために提供されているものであり、 将来予告なしに変更されることがあります。 マイクロソフトは、掲載されている情報に対して、いかなる責任も負わないものとします。

itanium ベースのバージョンの Windows Server 2003 および Windows XP のプログラム開発の詳細については、次の Microsoft Web サイト: 64 ビット Itaniumベースバージョンのアプリケーション開発の概要を参照Windows

この資料に記載されているサードパーティ製品は、マイクロソフトと関連のない他社の製品です。 明示または黙示にかかわらず、これらの製品のパフォーマンスや信頼性についてマイクロソフトはいかなる責任も負わないものとします。