WIn32API レジストリキー、エントリ、データを一度に作成する RegSetKeyValue

レジストリキー、エントリ、データを一度に作成するには、 RegSetKeyValue関数を用いる



RegSetKeyValue関数のプロトタイプは、以下のとおり

LONG WINAPI RegSetKeyValue(
  __in      HKEY hKey,//レジストリキーのハンドル
  __in_opt  LPCTSTR lpSubKey, //サブキー名
  __in_opt  LPCTSTR lpValueName, //エントリ名
  __in      DWORD dwType, //エントリのデータ型
  __in_opt  LPCVOID lpData, //エントリのデータ
  __in      DWORD cbData //エントリのデータサイズ
);



  • 「HKEY_CURRENT_USER」直下に、「test」というサブキーを作成して、さらに「HKEY_CURRENT_USER\test」にサブキーとそれに属するエントリを作成する
  • #include <windows.h>
    #include <stdio.h>
    
    int main()
    {
        HKEY hKey;
        LONG lRet;
        DWORD dwDisposition;
        TCHAR lpData[] = TEXT("あいうえお");
        DWORD dwNumberOfBytes = sizeof(lpData);
    
        //レジストリキー「HKEY_CURRENT_USER\test」を作成
        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.");
        }
    
        //「HKEY_CURRENT_USER\test」に直下にサブキー「subkey」を作成し、
        //そのサブキーに
        //  *レジストリエントリ:「name」
        //  *データ:あいうえお (Unicode文字列型のデータ)
        //をセットする
        lRet = RegSetKeyValue(hKey, TEXT("subkey"), TEXT("name"), REG_SZ, lpData, dwNumberOfBytes);
        if (lRet != ERROR_SUCCESS) {
            printf("RegSetKeyValue error: %d\n", lRet);
        }
    
        RegCloseKey(hKey);
    
        return 0;
    }


  • 参考

  • http://msdn.microsoft.com/en-us/library/windows/desktop/ms724921(v=vs.85).aspx