私が取り組んでいるコードには、32 ビットと 64 ビットの両方のコンポーネントがあり、レジストリで情報を共有する必要があります。このため、関数を使用するときにレジストリのリダイレクトを制御しようとしていNtOpenKey
ます (のユーザーモードに相当ZwOpenKey
) - 64 ビット コードからこの関数を呼び出す必要がありますが、32 ビット レジストリにアクセスする必要があります。(コードは以前は 32 ビットのみでしたが、現在は 64 ビットにアップグレードされているため、既存のコードをできるだけ多く使用することをお勧めします。これは、すべてを書き直して使用したくないということRegOpenKeyEx
です。)
当然、高レベルのレジストリ機能とは異なりNtOpenKey
、アクセス フラグを認識しないため、リダイレクトを指定する方法はありません。KEY_WOW64_32KEY
現時点で考えられる唯一の解決策はWow6432Node
、レジストリにアクセスするときにキー名を明示的にハードコーディングすることです。何かのようなもの:
\Registry\Machine\Software\Wow6432Node\MyCompanyKey\MyKey
残念ながら、これはハッキングに近いものであり、マイクロソフトは特に推奨していません。
この問題の正しい解決策はありますか? ドキュメントを読んでも役に立たず、関連する検索結果も見つかりませんでした。
編集:ちょっとした追加の詳細: Windows Server 2003 32 ビット/64 ビット、Windows 7/8、および Windows Server 2008 32 ビット/64 ビットをサポートする必要があります。(基本的に、Windows Server 2003 + Windows 7 以降のすべてのサーバー フレーバー。)