函数参考


_WinAPI_RegEnumKey

枚举指定的并已打开的注册表键子项.

#Include <WinAPIEx.au3>
_WinAPI_RegEnumKey ( $hKey, $iIndex )

参数

$hKey 打开的注册表项句柄,该键项必须已打开且有 $KEY_ENUMERATE_SUB_KEYS 访问权限.
 句柄由 _WinAPI_RegCreateKey() 或 _WinAPI_RegOpenKey() 函数返回.
 参数也可以为下列一预定义项:
 $HKEY_CLASSES_ROOT --- 定义文件类型和类型相关的属性
 $HKEY_CURRENT_CONFIG --- 包含本地计算机系统目前的硬件配置文件
 $HKEY_CURRENT_USER --- 定义当前用户的参数选择
 $HKEY_LOCAL_MACHINE --- 定义计算机物理状态,包括总线类型、系统内存数据、并安装的硬件和软件
 $HKEY_PERFORMANCE_DATA --- 允许访问性能数据
 $HKEY_USERS --- 确定本地计算机新用户定义默认用户配置,并作为当前用户的用户配置
$iIndex 项的索引.第一次调用本函数时,这个参数应为 0,后续调用则递增.

返回值

成功: 返回子项名称字符串
失败: 返回空字符串,设置 @error 标志为非 0 值, @extended 标志可能包含系统错误代码.

注意/说明

枚举子项,应用程序应先调用 _WinAPI_RegEnumKey() 函数, 且 $iIndex 参数设置为 0.
 然后应用程序增加 $iIndex 参数的值,并继续调用本函数,直到没有子项为止.
 (即 @extended 标志设置到 ERROR_NO_MORE_ITEMS (259)).
 应用程序还可以设置 $iIndex 为最后子项的索引,调用函数并递减索引值,直到索引值为 0.
 调用 _WinAPI_RegQueryInfoKey() 函数检索最后子项的索引值.
 当应用程序正在调用本函数时,不应再调用任何注册函数,这可能会改变枚举的键.

While an application is using the _WinAPI_RegEnumKey() function, it should not make calls to any registration
functions that might change the key being enumerated.

相关

详情参考

在MSDN中搜索


示例/演示


#Include <APIConstants.au3>
#Include <Array.au3>
#Include <WinAPIEx.au3>

Opt('MustDeclareVars', 1)

Global $hKey, $aKey, $Count

$hKey = _WinAPI_RegOpenKey($HKEY_CLASSES_ROOT, 'CLSID', $KEY_READ)
If @error Then
    MsgBox(16, @extended, _WinAPI_GetErrorMessage(@extended))
    Exit
EndIf
$Count = _WinAPI_RegQueryInfoKey($hKey)
Dim $aKey[$Count[0]]
For $i = 0 To UBound($aKey) - 1
    $aKey[$i] = _WinAPI_RegEnumKey($hKey, $i)
Next

_WinAPI_RegCloseKey($hKey)

_ArrayDisplay($aKey, '_WinAPI_RegEnumKey')