<Return[R]><Top>

RegEnumValue

Declare Function Api_RegEnumValue& Lib "advapi32" Alias "RegEnumValueA" (ByVal hKey&, ByVal dwIndex&, ByVal lpsValueName$, ByRef lpcbValueName&, ByVal lpReserved&, ByRef lpType&, ByRef lpData As Any, ByRef lpcbData&)

Declare Function RegEnumValue Lib "advapi32" Alias "RegEnumValueA" (ByVal hKey As Long, ByVal dwIndex As Long, ByVal lpsValueName As String, ByRef lpcbValueName As Long, ByVal lpReserved As Long, ByRef lpType As Long, ByRef lpData As Any, ByRef lpcbData As Long) As Long

指定された 1 つのレジストリキーに所属するレジストリエントリを列挙する。この関数を 1 回呼び出すたびに、1 つのレジストリエントリの名前とそれに対応するデータ(レジストリエントリのデータ)を取得する。

パラメータ
hKey
    現在開いているキーのハンドルを指定する。

    代わりに、あらかじめ定義されている次の予約済みハンドルのいずれかを指定することもできる。
    HKEY_CLASSES_ROOT
    HKEY_CURRENT_CONFIG
    HKEY_CURRENT_USER
    HKEY_LOCAL_MACHINE
    HKEY_USERS
    Windows NT/2000:HKEY_PERFORMANCE_DATA も指定できる。
    Windows 95/98:HKEY_DYN_DATA も指定できる。
    hKey パラメータで指定したキーに関連付けられているレジストリエントリが列挙される。
dwIndex
    取得するべきレジストリエントリのインデックス番号を指定する。最初にこの関数を呼び出すときは、0 を指定する。

    そして、次の呼び出し時は 1、その次は 2 と、1 つずつ増やしていきます。
    レジストリエントリはインデックス番号の順に配置されているわけではないので、新しいレジストリエントリを作成した場合、任意のインデックス

    番号が割り当てられる(現在の最大のインデックス番号に 1 を足した値とは限らない)。言い換えると、この関数で指定したインデックス番

    号と、返されるレジストリエントリの間に直接の関係はなく、実行してみるまでは、どのレジストリエントリが返されるのかわからない。
lpValueName
    1 個のバッファへのポインタを指定する。関数から制御が返ると、このバッファに、レジストリエントリの名前が格納される(終端の NULL

    文字を含む)。
lpcValueName
    lpValueName パラメータが指すバッファのサイズ(終端の NULL 文字を含む)を TCHAR 単位で保持している、1 個の変数へのポインタ

    を指定する。関数から制御が返ると、この変数に、lpValueName パラメータが指すバッファに格納された文字数が格納される(終端

    の NULL 文字を除く)。
lpReserved
    予約されている。NULL を指定すること。
lpType
    1 個の変数へのポインタを指定する。関数から制御が返ると、この変数に、レジストリエントリのデータ型が格納される。データ型のコードを

    次に示す。この情報が不要な場合、NULL を指定する。

    値                                                 

意味                                                                                                                       

    REG_BINARY

任意の形式のバイナリデータ。

    REG_DWORD32

ビット値。

    REG_DWORD_LITTLE_ENDIAN

 

 

 

リトルエンディアン形式の 32 ビット値である。REG_DWORD と同じことを意味する。
リトルエンディアン形式では、マルチバイトデータをメモリ内に格納する際に、最下位バイト(リトルエ

ンド)から最上位バイトの順で格納する。たとえば、0x12345678 という値をリトルエンディアン形式で

格納すると、0x78 0x56 0x34 0x12 という順序になる。

    REG_DWORD_BIG_ENDIAN

 

 

 

ビッグエンディアン形式の 32 ビット値である。
ビッグエンディアン形式では、マルチバイトデータをメモリ内に格納する際に、最上位バイト(ビッグエ

ンド)から最下位バイトの順で格納する。たとえば、0x12345678 という値をビッグエンディアン形式で

格納すると、0x12 0x34 0x56 0x78 という順序になる。

    REG_EXPAND_SZ

 

 

 

環境変数の展開前の表記("%PATH%" など)を保持している、NULL で終わる文字列である。

Unicode 版の関数を使っているときは Unicode 文字列、ANSI 版の関数を使っているときは ANSI

文字列が格納される。環境変数の表記を展開するには、ExpandEnvironmentStrings 関数を使

う。

    REG_LINK

Unicode のシンボリックリンクである。内部で使われる。アプリケーションは、このタイプを使わない。

    REG_MULTI_SZ

 

NULL で終わる複数の文字列からなる 1 つの配列である。配列の最後にもう 1 つの NULL 文字が

追加される。

    REG_NONE

レジストリエントリの未定義のタイプ。

    REG_QWORD

64 ビット値(quadruple word)。

    REG_QWORD_LITTLE_ENDIAN

リトルエンディアン形式の 64 ビット値。REG_QWORD と同じことを意味する。

    REG_RESOURCE_LIST

デバイスドライバのリソースリストである。

    REG_SZ

 

NULL で終わる文字列である。Unicode 版の関数を使っているときは Unicode 文字列、ANSI 版

の関数を使っているときは ANSI 文字列が格納される。

lpData
    1 個のバッファへのポインタを指定する。関数から制御が返ると、このバッファに、レジストリエントリのデータが格納される。この情報が不要

    な場合、NULL を指定する。
lpcbData
    lpData パラメータが指すバッファのサイズをバイト単位で保持している、1 個の変数へのポインタを指定する。

    関数から制御が返ると、この変数に、lpData パラメータが指すバッファに格納されたバイト数が格納されます。

    lpData パラメータで NULL を指定した場合に限って、lpcbData パラメータで NULL を指定できる。
 

戻り値
    関数が成功すると、ERROR_SUCCESS が返る。
    関数が失敗すると、Winerror.h ヘッダーファイル内で定義されている、0 以外の値が返る。

    FORMAT_MESSAGE_FROM_SYSTEM フラグを指定して FormatMessage 関数を呼び出すと、エラーの一般的な説明を取得できる。

解説
    レジストリエントリを列挙するには、最初は dwIndex パラメータで 0 を指定して RegEnumValue 関数を呼び出す。以後、dwIndex をインク

    リメントして(1 増やして)RegEnumValue 関数を呼び出す。すべてのレジストリエントリが列挙されるまで(関数が

    ERROR_NO_MORE_ITEMS を返すまで)この操作を繰り返す。
    通常とは逆の順番で列挙を行うには、最初に dwIndex パラメータで最後のレジストリエントリのインデックス番号を指定して RegEnumValue

    関数を呼び出す。以後、dwIndex をデクリメントして(1 減らして)RegEnumValue 関数を呼び出す。dwIndex が 0 になるまでこの操作を

    繰り返す。最後のレジストリエントリのインデックス番号を取得するには、RegQueryInfoKey 関数を使う。
    RegEnumValue 関数の使用中は、列挙対象のレジストリエントリを変更する可能性のあるレジストリ関数を呼び出さないこと。
    レジストリエントリ名バッファや、レジストリエントリのデータが格納されるバッファの最大サイズを取得するには、RegQueryInfoKey 関数を使

    う。Windows 95/98:レジストリのサブキー名、およびレジストリエントリ名の長さは、最大 255 文字である。