32bitアプリから 64bit レジストリにアクセスする方法と 2000での注意
32bit アプリから レジストリにアクセスすると、 Wow6432Node のようなへんてこな名前のノードにアクセスすることになります。
WOW64 におけるレジストリのリダイレクトの例 (Windows)
しかし、REGSAM パラメータに KEY_WOW64_32KEY やKEY_WOW64_64KEY を指定することで、 32bitレジストリか 64bit レジストリかを 指定してアクセスすることがRegCreateKeyEx や RegOpenKeyEx できます。
Windows 2000では これらのオプションはサポートされていませんが、指定して実行すると、ERROR 5 (ERROR_ACCESS_DENIED/アクセス拒否)になります。
対応 32bit OS で実行するとどちらも、同じ32bitノードへのアクセスになり、エラーにはなりません。
#define KEY_WOW64_64KEY 0x100 #define KEY_WOW64_32KEY 0x200 HKEY hKey; |
ちなみに両方指定(KEY_WOW64_32KEY|KEY_WOW64_64KEY) すると、対応している場合は 87(ERROR_INVALID_PARAMETER/パラメータエラー) が、非対応の場合は 5 が帰ってくるので判定に使えるかも ?
Registry Key Security and Access Rightsregistryregistry, security (Windows)
Comments