Obtient le type et les données pour une liste de noms de valeur associés à une clé de registre ouverte
#include <WinAPIReg.au3>
_WinAPI_RegQueryMultipleValues ( $hKey, ByRef $aValent, ByRef $pBuffer [, $iStart = 0 [, $iEnd = -1]] )
$hKey |
Handle de la clé de registre ouverte. La clé doit avoir été ouverte avec le droit d'accès KEY_QUERY_VALUE. Ce handle est retourné par la fonction _WinAPI_RegCreateKey() ou _WinAPI_RegOpenKey(). Il peut également être l'une des clés prédéfinies suivantes: $HKEY_CLASSES_ROOT $HKEY_CURRENT_CONFIG $HKEY_CURRENT_USER $HKEY_LOCAL_MACHINE $HKEY_PERFORMANCE_DATA $HKEY_USERS |
$aValent | Le tableau 2D ([valuename1, *, *, *], ..., [valuenameN, *, *, *]) qui contient les noms de valeur à rechercher. En entrée, les éléments 1, 2, et 3 du tableau ne sont pas utilisés, mais les dimensions du tableau doivent être [n][4], sinon la fonction échoue. En outre, cette fonction échoue si l'une des valeurs spécifiées n'existe pas dans la clé de registre spécifiée. |
$pBuffer | Un pointeur sur une mémoire tampon qui contient les données de registre. En règle générale, vous ne devriez pas utiliser ce tampon directement (voir remarques). |
$iStart | [optionnel] L'index du tableau où commencer la requête. |
$iEnd | [optionnel] L'index du tableau où arrêter la requête. |
Succès: | Retourne le nombre d'octets copiés dans la mémoire tampon. Le tableau $aValent contiendra les données suivantes: [n][0] - Le nom de la valeur (reste inchangé). [n][1] - La taille des données, en octets. [n][2] - Le pointeur sur les données du tampon pointé par le paramètre $pBuffer. [n][3] - Le type de données ($REG_*). |
Échec: | Définit @error <> 0, @extended peut contenir le code d'erreur du système. |
Pour éviter la sérialisation excessive, les données retournées par la fonction ne peuvent pas dépasser un mégaoctet.
Lorsque des données de registre retournées ne sont plus nécessaires, vous devez libérer la mémoire allouée pointée par le paramètre $pBuffer en appelant la fonction _WinAPI_FreeMemory().
_WinAPI_RegCreateKey, _WinAPI_RegOpenKey
Consultez RegQueryMultipleValues dans la librairie MSDN.
#include <APIRegConstants.au3> #include <Array.au3> #include <MsgBoxConstants.au3> #include <WinAPIError.au3> #include <WinAPIMem.au3> #include <WinAPIReg.au3> Local $aValent[19][4] ; Notez que si au moins l'un des noms de valeur suivants ne se trouve pas dans la clé de registre spécifiée, la fonction échoue! ; HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders $aValent[0][0] = 'AppData' $aValent[1][0] = 'Cache' $aValent[2][0] = 'Cookies' $aValent[3][0] = 'Desktop' $aValent[4][0] = 'Favorites' $aValent[5][0] = 'History' $aValent[6][0] = 'Local AppData' $aValent[7][0] = 'My Music' $aValent[8][0] = 'My Pictures' $aValent[9][0] = 'My Video' $aValent[10][0] = 'NetHood' $aValent[11][0] = 'Personal' $aValent[12][0] = 'PrintHood' $aValent[13][0] = 'Programs' $aValent[14][0] = 'Recent' $aValent[15][0] = 'SendTo' $aValent[16][0] = 'Start Menu' $aValent[17][0] = 'Startup' $aValent[18][0] = 'Templates' _ArrayDisplay($aValent, '_WinAPI_RegQueryMultipleValues') Local $hKey = _WinAPI_RegOpenKey($HKEY_CURRENT_USER, 'Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders', $KEY_QUERY_VALUE) If @error Then MsgBox(BitOR($MB_ICONERROR, $MB_SYSTEMMODAL), @extended, _WinAPI_GetErrorMessage(@extended)) Exit EndIf Local $pBuffer _WinAPI_RegQueryMultipleValues($hKey, $aValent, $pBuffer) If @error Then MsgBox(BitOR($MB_ICONERROR, $MB_SYSTEMMODAL), @extended, _WinAPI_GetErrorMessage(@extended)) Exit EndIf _WinAPI_RegCloseKey($hKey) _ArrayDisplay($aValent, '_WinAPI_RegQueryMultipleValues') For $i = 0 To UBound($aValent) - 1 $aValent[$i][2] = DllStructGetData(DllStructCreate('wchar['& $aValent[$i][1] & ']', $aValent[$i][2]), 1) Next _WinAPI_FreeMemory($pBuffer) _ArrayDisplay($aValent, '_WinAPI_RegQueryMultipleValues')