レジストリに値を書き込むには、RegSetValueEx()関数を使います。WOW64(64bit)のレジストリのデータを書き込むには、 レジストリキーハンドルを取得する際に、RegOpenKeyEx()関数の権限に、KEY_WOW64_64KEYを付加してキーハンドルを取得します。
#include <stdio.h> #include <tchar.h> #include <iostream> #include <string> #include <windows.h> /* レジストリの書き込み(64bit) WOW64 の影響を受けるレジストリ キー https://msdn.microsoft.com/ja-jp/library/aa384253(v=vs.85).aspx */ int _tmain ( int argc , _TCHAR* argv[] ) { // std::wcoutのロケールを設定 std::wcout.imbue( std::locale( "", std::locale::ctype ) ); // エラーコード HRESULT hResult = S_OK; { // 戻り値 DWORD dwResult = 0; // HKEY HKEY hKey = NULL; /* レジストリオープン */ dwResult = ::RegOpenKeyEx( HKEY_LOCAL_MACHINE // レジストリキー , L"SOFTWARE¥¥TestApplication" // レジストリサブキー , 0 // Reserved(0固定) , KEY_SET_VALUE // アクセス権 | KEY_WOW64_64KEY // 64bit(WOW64) , &hKey // キーハンドルの受け取り位置 ); if ( ERROR_SUCCESS != dwResult ) { // エラー hResult = ::HRESULT_FROM_WIN32( dwResult ); goto err; } /* レジストリに値を書き込み */ { std::wstring strWriteValue = L"Test Value String"; dwResult = ::RegSetValueEx( hKey // キーハンドル , L"TestVersion" // ValueName , 0 // Reserved(0固定) , REG_SZ // データ型 , (LPBYTE)strWriteValue.c_str() // 書き込み内容 , strWriteValue.size() * sizeof(TCHAR) // 書き込みサイズ(BYTE) ); if ( ERROR_SUCCESS != dwResult ) { // エラー hResult = ::HRESULT_FROM_WIN32( dwResult ); goto err; } } std::wcout << L"書き込みました。" << std::endl; err: // キーハンドルの破棄 if ( NULL != hKey ) { ::RegCloseKey( hKey ); } } // 処理結果を返す return( 0 ); }
書き込みました。