RegEnumKeyEx函数枚举指定的打开注册表项的子项。该函数在每次调用时检索有关一个子项的信息。与RegEnumKey功能不同,RegEnumKeyEx检索子项的类名和上次修改的时间。
LONG RegEnumKeyEx(
HKEY 【的hKeyru-Latn】, | //键入枚举的句柄 |
DWORD 【dwIndex】, | //枚举子项的索引 |
LPTSTR 【lpName】, | //子项名称缓冲区的地址 |
LPDWORD 【lpcbName】, | //子地址缓冲区的大小 |
LPDWORD 【lpReserved】, | //保留 |
LPTSTR 【lpClass】, | //类的字符串缓冲区的地址 |
LPDWORD 【lpcbClass】, | //类缓冲区大小的地址 |
PFILETIME 【lpftLastWriteTime】 | //地址时关键上次写入 |
); |
参数
【的hKeyru-Latn】
标识当前打开的键或任何以下预定义保留句柄值:
HKEY_CLASSES_ROOT
HKEY_CURRENT_USER
HKEY_LOCAL_MACHINE
HKEY_USERS
枚举的键是由【的hKeyru-Latn】标识的键的子键。
【dwIndex】
指定要检索的子项的索引。对于第一次调用RegEnumKeyEx函数,此参数应为零,然后为后续调用递增。
因为子项没有被排序,任何新的子项都将有一个任意的索引。这意味着该函数可以以任何顺序返回子项。
【lpName】
指向接收子项名称的缓冲区,包括终止空字符。该函数仅将副键的名称(而不是全键层次结构)复制到缓冲区。
【lpcbName】
指向一个变量,指定由【lpName】参数指定的缓冲区的大小(以字符为单位)。这个大小应该包括终止空字符。当函数返回时,【lpcbName】指向的变量包含缓冲区中存储的字符数。返回的计数不包括终止空字符。
【lpReserved】
Reserved; must be NULL.
【lpClass】
指向函数返回时包含枚举子项的类的缓冲区。如果不需要该类,则该参数可以为NULL。
【lpcbClass】
指向一个变量,指定由【lpClass】参数指定的缓冲区的大小(以字符为单位)。大小应包括终止空字符。当函数返回时,【lpcbClass】包含缓冲区中存储的字符数。返回的计数不包括终止空字符。只有【lpClass】为NULL时,此参数才可以为NULL。
【lpftLastWriteTime】
指向一个变量,它接收上次写入的枚举子项的时间。
返回值
如果函数成功,则返回值为ERROR_SUCCESS。
如果函数失败,返回值是在WINERROR.H中定义的非零错误代码。您可以使用带有FORMAT_MESSAGE_FROM_SYSTEM标志的FormatMessage函数来获取错误的一般描述。
备注
要枚举子项,应用程序应该首先调用RegEnumKeyEx函数,将【dwIndex】参数设置为零。应用程序应该增加【dwIndex】参数并调用RegEnumKeyEx,直到没有更多子项(直到函数返回ERROR_NO_MORE_ITEMS)为止。
应用程序还可以在首次调用该函数时将【dwIndex】设置为最后一个子项的索引,并递减索引,直到枚举了索引为0的子项。要检索最后一个子项的索引,请使用RegQueryInfoKey函数。
当一个应用程序正在使用RegEnumKeyEx函数时,它不应该调用任何可能更改被枚举的键的注册函数。
必须使用KEY_ENUMERATE_SUB_KEYS访问权限(KEY_READ包含KEY_ENUMERATE_SUB_KEYS)打开【的hKeyru-Latn】标识的密钥。使用RegCreateKeyEx或RegOpenKeyEx功能打开该键。
也可以看看
RegCreateKeyEx, RegDeleteKey, RegEnumKey, RegOpenKeyEx, RegQueryInfoKey