RegEnumValue(A)

指定されたレジストリキーが持つ値を列挙します。この関数は、呼び出されるたびに、1つの値の名前と対応する値のデータを取得します。

LONG RegEnumValueA(
    HKEY   hKey,         // キーのハンドル
    DWORD  dwIndex,      // 値のインデックス
    PTSTR  pValueName,   // 値の名前を格納するバッファ
    PDWORD pcbValueName, // lpValueNameのサイズを入れた変数
    PDWORD pReserved,    // 予約(NULLを指定)
    PTSTR  pType,        // 値のタイプを格納するバッファ
    PBYTE  pData,        // 値のデータを格納するバッファ
    PDWORD pcbData       // lpDataのサイズを入れた変数
);

ADVAPI32.DLL

引数

hKey

現在オープンされているキーのハンドルを指定します。このハンドルは KEY_QUERY_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
dwIndex

取得する値の 0 から始まるインデックスを指定します。

pValueName

値の名前を格納するためのバッファのアドレスを指定します。

pcbValueName

pValueName パラメータで表されるバッファのバイト数(Unicode 版の場合は文字数)単位のサイズを格納した変数のアドレスを指定します。関数が制御を返すと、 pValueName パラメータのバッファにコピーされた文字列のバイト数(Unicode 版の場合は文字数)がこの変数に格納されます。

pReserved

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

pType

値のデータの型を格納するための変数のアドレスを指定します。関数が制御を返すと、値のデータの型を示す値が格納されます。値のデータの型についての情報が不要の場合は 0 (NULL) を指定することができます。

pData

値のデータを格納するためのバッファのアドレスを指定します。値のデータが不要の場合は 0 (NULL) を指定することができます。

pcbData

pData パラメータで表されるバッファのバイト単位のサイズを格納した変数のアドレスを指定します。関数が制御を返すと、バッファに格納されたデータのバイト数が格納されます。 pData パラメータに 0 (NULL) を指定した場合は、このパラメータに 0 (NULL) を指定することができます。

戻り値

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

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

解説

値を列挙するには、まず dwIndex パラメータに 0 を指定してから RegEnumValue 関数を呼び出します。以後、 dwIndex パラメータをインクリメント(1ずつ加算)しながら RegEnumValue 関数を呼び出します。この操作を、すべての値が列挙されるまで(RegEnumValue 関数が戻り値 259 (ERROR_NO_MORE_ITEMS) を返すまで)繰り返します。

逆に、最初の関数呼び出し時に dwIndex パラメータに最後の値のインデックスを指定し、インデックスが 0 になるまで dwIndex パラメータをデクリメント(1ずつ減算)しながら関数を呼び出していくこともできます。このとき、最後の値のインデックスを取得するには RegQueryInfoKey 関数を使います。

指定されたレジストリキーが持つ値で最も長い値の名前の長さを取得するには RegQueryInfoKey 関数を使います。

対応情報

Windows 95 以降 / Windows NT 3.1 以降