レジストリに値を書き込むには、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 );
}
書き込みました。