UDF > WinAPIEx > Registry >


_WinAPI_RegEnumKey

Énumère les sous-clés de la clé de registre ouverte spécifiée

#include <WinAPIReg.au3>
_WinAPI_RegEnumKey ( $hKey, $iIndex )

Paramètres

$hKey Handle de la clé de registre ouverte. La clé doit avoir été ouverte avec le droit d'accès $KEY_ENUMERATE_SUB_KEYS. Ce handle est retourné par la fonction _WinAPI_RegCreateKey() ou _WinAPI_RegOpenKey().
Il peut également être l'une des clés prédéfinis suivantes:
$HKEY_CLASSES_ROOT
$HKEY_CURRENT_CONFIG
$HKEY_CURRENT_USER
$HKEY_LOCAL_MACHINE
$HKEY_PERFORMANCE_DATA
$HKEY_USERS
$iIndex L'index de la sous-clé à récupérer. Ce paramètre doit être nul pour le premier appel à la fonction _WinAPI_RegEnumKey() et ensuite incrémenté pour les appels suivants.

Valeur de retour

Succès: Retourne la chaîne qui contient le nom de la sous-clé.
Échec: Définit @error <> 0, @extended peut contenir le code d'erreur du système.

Remarques

Pour énumérer les sous-clés, une application doit d'abord appeler la fonction _WinAPI_RegEnumKey() avec le paramètre $iIndex à zéro. L'application doit ensuite incrémenter le paramètre $iIndex et appeler _WinAPI_RegEnumKey() jusqu'à ce qu'il n'y ait plus sous-clés (autrement dit que @extended soit égal à ERROR_NO_MORE_ITEMS (259)).

L'application peut également définir $iIndex à l'index de la dernière sous-clé au premier appel à la fonction et décrémenter l'index jusqu'à ce que la sous-clé d'index 0 soit énumérée. Pour récupérer l'index de la dernière sous-clé, utilisez la fonction _WinAPI_RegQueryInfoKey().

Pendant qu'une application utilise la fonction _WinAPI_RegEnumKey(), il ne faut pas faire d'appel à une inscription de fonction qui pourrait changer la clé qui est en train d'être énumérée.

En relation

_WinAPI_RegCreateKey, _WinAPI_RegOpenKey, _WinAPI_RegQueryInfoKey

Voir aussi

Consultez RegEnumKeyEx dans la librairie MSDN.

Exemple

#include <APIRegConstants.au3>
#include <Array.au3>
#include <MsgBoxConstants.au3>
#include <WinAPIError.au3>
#include <WinAPIReg.au3>

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

_WinAPI_RegCloseKey($hKey)

_ArrayDisplay($aKey, '_WinAPI_RegEnumKey')