指定されたレジストリキーが持つ値を列挙します。この関数は、呼び出されるたびに、1つの値の名前と対応する値のデータを取得します。
LONG RegEnumValueA(
HKEY hKey, // キーのハンドル
DWORD dwIndex, // 値のインデックス
PTSTR pValueName, // 値の名前を格納するバッファ
PDWORD pcbValueName, // lpValueNameのサイズを入れた変数
PDWORD pReserved, // 予約(NULLを指定)
PTSTR pType, // 値のタイプを格納するバッファ
PBYTE pData, // 値のデータを格納するバッファ
PDWORD pcbData // lpDataのサイズを入れた変数
);
ADVAPI32.DLL
現在オープンされているキーのハンドルを指定します。このハンドルは 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 |
取得する値の 0 から始まるインデックスを指定します。
値の名前を格納するためのバッファのアドレスを指定します。
pValueName パラメータで表されるバッファのバイト数(Unicode 版の場合は文字数)単位のサイズを格納した変数のアドレスを指定します。関数が制御を返すと、 pValueName パラメータのバッファにコピーされた文字列のバイト数(Unicode 版の場合は文字数)がこの変数に格納されます。
予約されています。 0 を指定しなければなりません。
値のデータの型を格納するための変数のアドレスを指定します。関数が制御を返すと、値のデータの型を示す値が格納されます。値のデータの型についての情報が不要の場合は 0 (NULL) を指定することができます。
値のデータを格納するためのバッファのアドレスを指定します。値のデータが不要の場合は 0 (NULL) を指定することができます。
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 以降