指定されたレジストリキーのサブキーを列挙します。この関数は、呼び出されるたびに、1つのサブキーに関する情報を取得します。
LONG RegEnumKeyExA(
HKEY hKey, // キーのハンドル
DWORD dwIndex, // サブキーのインデックス
PTSTR pName, // サブキー名を格納するバッファ
PDWORD pcbName, // pName のサイズを入れた変数
PDWORD pReserved, // 予約(NULLを指定)
PTSTR pClass, // クラス名を格納するバッファ
PDWORD pcbClass, // pClass のサイズを入れた変数
PFILETIME pftLastWrite // 最終書き込み時間
);
ADVAPI32.DLL
現在オープンされているキーのハンドルを指定します。このハンドルは KEY_ENUMERATE_SUB_KEYS アクセスを持っていなければなりません。
次の定義済みキーを指定することもできます。
| 値 | 定義済みキー |
|---|---|
| 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 から始まるインデックスを指定します。
サブキーの名前を格納するためのバッファのアドレスを指定します。この関数は、サブキーの名前だけをコピーします。階層全体を含めた名前をコピーするわけではありません。
pName パラメータで表されるバッファのバイト数(Unicode 版の場合は文字数)単位のサイズを格納した変数のアドレスを指定します。関数が制御を返すと、 pName パラメータのバッファにコピーされた文字列のバイト数(Unicode 版の場合は文字数)がこの変数に格納されます。
予約されています。 0 (NULL) を指定しなければなりません。
サブキーのクラス名を格納するバッファのアドレスを指定します。この情報が不要の場合は 0 (NULL) を指定することができます。現在はどのようなクラスも定義されていないため、アプリケーションはこのパラメータを無視するべきです。
pClass パラメータで表されるバッファのバイト数(Unicode 版の場合は文字数)単位のサイズを格納した変数のアドレスを指定します。関数が制御を返すと、 pClass パラメータのバッファにコピーされたサイズがこの変数に格納されます。 pClass パラメータに 0 (NULL) を指定した場合は、このパラメータに 0 (NULL) を指定することができます。
サブキーの最終書き込み時間を格納するための FILETIME 構造体のアドレスを指定します。
成功すると 0 (ERROR_SUCCESS) が返ります。
失敗すると 0 以外のエラーコードが返ります。このエラーコードと FORMAT_MESSAGE_FROM_SYSTEM フラグを指定して FormatMessage 関数を呼び出すことで、エラーメッセージを取得できます。
サブキーを列挙するには、まず dwIndex パラメータに 0 を指定してから RegEnumKeyEx 関数を呼び出します。以後、 dwIndex パラメータをインクリメント(1ずつ加算)しながら RegEnumKeyEx 関数を呼び出します。この操作を、すべてのサブキーが列挙されるまで(RegEnumKeyEx 関数が戻り値 259 (ERROR_NO_MORE_ITEMS) を返すまで)繰り返します。
逆に、最初の関数呼び出し時に dwIndex パラメータに最後のサブキーのインデックスを指定し、インデックスが 0 になるまで dwIndex パラメータをデクリメント(1ずつ減算)しながら関数を呼び出していくこともできます。このとき、最後のサブキーのインデックスを取得するには RegQueryInfoKey 関数を使います。
指定されたレジストリキーが持つサブキーで最も長いサブキーの名前やクラスの名前の長さを取得するには RegQueryInfoKey 関数を使います。
Windows 95 以降 / Windows NT 3.1 以降