レジストリに値を書き込むには、RegSetValueEx()関数を使います。
#include <stdio.h> #include <tchar.h> #include <iostream> #include <string> #include <windows.h> /* レジストリの書き込み */ 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 // アクセス権 , &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 ); }
書き込みました。