Énumère les sous-clés de la clé de registre ouverte spécifiée
#include <WinAPIReg.au3>
_WinAPI_RegEnumKey ( $hKey, $iIndex )
$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. |
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. |
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.
_WinAPI_RegCreateKey, _WinAPI_RegOpenKey, _WinAPI_RegQueryInfoKey
Consultez RegEnumKeyEx dans la librairie MSDN.
#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')