RegSetValueEx(A)

レジストリキーの下に指定された値のデータと型を設定します。

LONG RegSetValueExA(
    HKEY    hKey,        // キーのハンドル
    PCTSTR  pValueName,  // 値の名前
    DWORD   Reserved,    // 予約(0を指定)
    DWORD   dwType,      // データのタイプ
    CONST BYTE *pData,   // データバッファのアドレス
    DWORD   cbData       // データサイズ
);

ADVAPI32.DLL

引数

hKey

現在オープンされているキーのハンドルを指定します。このハンドルは KEY_SET_VALUE アクセスを持っていなければなりません。

次の定義済みキーを指定することもできます。

定義済みキー
0x80000000 HKEY_CLASSES_ROOT
0x80000001 HKEY_CURRENT_USER
0x80000002 HKEY_LOCAL_MACHINE
0x80000003 HKEY_USERS
0x80000004 Windows NT/2000/XP: HKEY_PERFORMANCE_DATA
0x80000005 HKEY_CURRENT_CONFIG
0x80000006 Windows 95/98/Me: HKEY_DYN_DATA
pValueName

値の名前を表す文字列のアドレスを指定します。キーに指定された名前の値が存在しない場合は、この名前の値を追加します。

空の文字列("")のアドレスまたは 0 (NULL) を指定した場合には、キーの名前なしの値またはデフォルトの値を設定します。

Windows 95/98/Me: Windows 95 では、キーのデフォルトの値のデータ型は常に REG_SZ であるので、デフォルトの値では dwType パラメータには REG_SZ を指定しなければなりません。 Windows 98/Me では、デフォルトの値の型は初期状態では REG_SZ ですが、 RegSetValueEx 関数にはどのデータ型でも指定することができます。

Windows NT/2000/XP: 初期状態では名前なしの値またはデフォルトの値を持ちません。名前なしの値にはどのデータ型でも指定することができます。

Reserved

予約されています。 0 を指定しなければなりません。

dwType

格納する値のデータの型を指定します。

pData

格納するデータが格納されたバッファのアドレスを指定します。

cbData

pData パラメータが示す情報のサイズを、バイト単位で指定します。データの種類が REG_SZ, REG_EXPAND_SZ, REG_MULTI_SZ のいずれかのときは、終端ヌル文字のサイズも含めなければなりません。

戻り値

成功すると 0 (ERROR_SUCCESS) が返ります。

失敗すると 0 以外のエラーコードが返ります。このエラーコードと FORMAT_MESSAGE_FROM_SYSTEM フラグを指定して FormatMessage 関数を呼び出すことで、エラーメッセージを取得できます。

解説

値のデータの長さは、利用可能なメモリによって制限されます。 2048 バイトを超えるような長い値のデータの場合は、データはファイルとして格納し、そのファイル名をレジストリに格納するようにすべきです。アイコンやビットマップ、実行可能ファイルなどのアプリケーションの要素は、ファイルとして格納されるべきで、レジストリにおくべきではありません。

文字列データはレジストリ中に Unicode 文字列の形で格納されます。アプリケーションが dwType パラメータに REG_SZ, REG_MULTI_SZ, REG_EXPAND_SZ のいずれかを指定して ANSI 版の関数(RegSetValueExA 関数)を呼び出すと、 pData パラメータが指し示す ANSI 文字列が Unicode 文字列に変換されてからレジストリに格納されます。

Windows 95/98/Me: レジストリの1つの値のサイズは 16,300 バイトに制限されます。このサイズには、データサイズ(cbData パラメータ)および値の名前(pValueName パラメータ)についての情報のサイズも含まれます。また、1つのキーが持つすべての値の総サイズは 64 キロバイトに制限されます。

対応情報

Windows 95 以降 / Windows NT 3.1 以降