レジストリキーの作成するには、RegCreateKeyEx()関数を使います。
#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;
// キーが存在していたかどうか
DWORD dwDisposition = 0;
/*
レジストリキーの作成
*/
dwResult = ::RegCreateKeyEx(
HKEY_LOCAL_MACHINE // レジストリキー
, L"SOFTWARE¥¥TestApplication" // レジストリサブキー
, 0 // Reserved(0固定)
, NULL // クラス(オブジェクトタイプ)
, REG_OPTION_NON_VOLATILE // 格納方法(不揮発)
, KEY_ALL_ACCESS // アクセス権
, NULL // Security Attributes
, &hKey // キーハンドルの受け取り位置
, &dwDisposition // キーが存在していたかどうかを示す値
);
if ( ERROR_SUCCESS != dwResult ) {
// エラー
hResult = ::HRESULT_FROM_WIN32( dwResult );
goto err;
}
switch( dwDisposition ) {
case REG_CREATED_NEW_KEY: std::wcout << L"新しいキーを作成しました。" << std::endl; break;
case REG_OPENED_EXISTING_KEY: std::wcout << L"キーは既に存在していました。" << std::endl; break;
}
err:
// キーハンドルの破棄
if ( NULL != hKey ) {
::RegCloseKey( hKey );
}
}
// 処理結果を返す
return( 0 );
}
新しいキーを作成しました。