代替レジストリ ビューへのアクセス

既定では、WOW64 で実行されている 32 ビット アプリケーションは 32 ビットのレジストリ ビューにアクセスし、64 ビット アプリケーションは 64 ビットのレジストリ ビューにアクセスします。 次のフラグを使用すると、32 ビット アプリケーションは 64 ビット レジストリ ビューのリダイレクトされたキーにアクセスし、64 ビット アプリケーションは 32 ビット レジストリ ビューでリダイレクトされたキーにアクセスできます。 これらのフラグは、共有レジストリ キーには影響しません。 詳細については、「 WOW64 の影響を受けるレジストリ キー」を参照してください。

フラグ名 説明
KEY_WOW64_64KEY 0x0100 32 ビットアプリケーションまたは 64 ビット アプリケーションから 64 ビット キーにアクセスします。
KEY_WOW64_32KEY 0x0200 32 ビットまたは 64 ビットアプリケーションから 32 ビット キーにアクセスします。
ARM でのWindows 10: これは、32 ビット ARM プロセスの場合は 32 ビット ARM レジストリ ビュー、32 ビット x86 および 64 ビット ARM64 プロセスの場合は 32 ビットの x86 レジストリ ビューを指します。

これらのフラグは、次のレジストリ関数の samDesired パラメーターで指定できます。

KEY_WOW64_32KEYまたはKEY_WOW64_64KEYを指定できます。 両方のフラグが指定されている場合、関数は ERROR_INVALID_PARAMETER で失敗します。

Windows Server 2008、Windows Vista、Windows Server 2003、Windows XP: 両方のフラグが指定されている場合、関数の動作は未定義です。

RegDeleteKey 関数を使用して代替レジストリ ビューにアクセスすることはできません。

アプリケーションからレジストリにアクセスする場合のベスト プラクティスを次に示します。

  • アプリケーションがいずれかのフラグを使用して代替レジストリ ビューにアクセスした後、子レジストリ キーに対する後続のすべての操作 (作成、削除、または開く) で、同じフラグを明示的に使用する必要があります。 そうしないと、予期しない動作が発生する可能性があります。
  • 両方のビューのすべてのキーを正確に列挙するには、列挙を 2 回のパスで実行します。 最初のパスでは、いずれかのフラグで開かれたハンドルを使用し、もう一方のパスではもう一方のフラグで開かれたハンドルを使用する必要があります。

注意

Wow6432Node キーと WowAA32Node キーは予約されています。 互換性のために、アプリケーションではこれらのキーを直接使用しないでください。

WMI を介した代替レジストリ ビューへのアクセスの詳細については、「 64 ビット プラットフォームでの WMI データの要求」を参照してください。

レジストリ リダイレクター

レジストリリフレクション