Win32API レジストリにキーを作成する RegCreateKeyEx
レジストリキーを作成するには、RegCreateKeyEx関数を用いる。
RegCreateKeyEx関数は、レジストリキーが存在しなければ作成し、既に存在していればレジストリキーをオープンする
RegCreateKeyEx関数のプロトタイプは、以下のとおり。
LONG RegCreateKeyEx( HKEY hKey, // 開くべきキーのハンドル LPCTSTR lpSubKey, // サブキーの名前 DWORD Reserved, // 予約済み LPTSTR lpClass, // クラスの文字列 DWORD dwOptions, // 特別なオプション REGSAM samDesired, // 希望のセキュリティアクセス権 LPSECURITY_ATTRIBUTES lpSecurityAttributes, // 継承の指定 PHKEY phkResult, // キーのハンドル LPDWORD lpdwDisposition // 既存かどうかを示す値が格納される変数 );
以下の例では、HKEY_CURRENT_USERの直下に「test」というキーを作成(既に存在していればオープン)し、すぐにRegCloseKeyでレジストリキーのハンドルをクローズする。RegCreateKeyEx関数を実行後、dwDispositionがREG_CREATED_NEW_KEYであれば、キーが新規作成されたことを示す。また、dwDispositionがREG_OPENED_EXISTING_KEYであれば、キーは既に存在しており、そのキーをオープンしたことを示す。
#include <windows.h> #include <stdio.h> int main() { HKEY hKey; LONG lRet; DWORD dwDisposition; lRet = RegCreateKeyEx(HKEY_CURRENT_USER, TEXT("test"), 0, NULL, REG_OPTION_NON_VOLATILE, KEY_CREATE_SUB_KEY|KEY_SET_VALUE, NULL, &hKey, &dwDisposition); if (lRet != ERROR_SUCCESS) { return 1; } if (dwDisposition == REG_CREATED_NEW_KEY) { puts("Because the key did not exist, has been newly created."); } else if (dwDisposition == REG_OPENED_EXISTING_KEY) { puts("Key exists, and that was simply to open the key."); } RegCloseKey(hKey); return 0; }
http://msdn.microsoft.com/ja-jp/library/cc429904.aspx