Win32API レジストリエントリにエントリ名とデータをセットする RegSetValueEx

レジストリエントリにエントリ名とデータをセットするには RegSetValueEx関数を用いる


RegSetValueExのプロトタイプは、以下のとおり。

LONG RegSetValueEx(
  HKEY hKey,           // 親キーのハンドル
  LPCTSTR lpValueName, // レジストリエントリ名
  DWORD Reserved,      // 予約済み
  DWORD dwType,        // レジストリエントリのデータ型
  CONST BYTE *lpData,  // レジストリエントリのデータ
  DWORD cbData         // レジストリエントリのデータのサイズ
);


  • 例として、HKEY_CURRENT_USER直下に「test」というキーを作成し、そのキーに「Value」というエントリ名とそれに対する「あいうえお」というREG_SZ型のデータをセットする
  • #include <windows.h>
    #include <stdio.h>
    
    int main()
    {
        HKEY hKey;
        BYTE lpData[32];
        TCHAR lpString[] = TEXT("あいうえお");
    
        if (RegCreateKey(HKEY_CURRENT_USER, TEXT("test"), &hKey) != ERROR_SUCCESS) {
            fprintf(stderr, "RegCreateKey error\n");
            return 1;
        }
    
        if (RegSetValueEx(hKey, TEXT("Value"), 0, REG_SZ, (const BYTE*)lpString, sizeof(lpString)) == ERROR_SUCCESS) {
            fprintf(stderr, "RegCreateKey succeeded\n");
        } else {
            fprintf(stderr, "RegCreateKey error\n");
        }
    
        RegCloseKey(hKey);
    
        return 0;
    }



  • 参考

  • http://msdn.microsoft.com/ja-jp/library/cc429936.aspx