Lire une sub-key du registre

Résolu
Herve_be Messages postés 1016 Date d'inscription mercredi 4 août 2010 Statut Membre Dernière intervention 24 avril 2024 - 14 janv. 2019 à 09:59
Herve_be Messages postés 1016 Date d'inscription mercredi 4 août 2010 Statut Membre Dernière intervention 24 avril 2024 - 14 janv. 2019 à 15:42
Bonjour,
Je sais comment lire le contenu d'une clé du registre mais comment faire si on ne connait pas le nom de la sub-key ?
Exemple :
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces
cette clé contient 3 sous-répertoires aux noms rébarbatifs
{77079887-e3a5-4cba-8b9c-015b464834f1}
{7f3a3952-db7a-11e7-9da7-806e6f6e6963}
{81875a5a-5226-4642-89ce-7841d9d4a8c1}
comment faire pour les parcourir jusqu'à trouver le nom que je cherche et sa valeur ?

2 réponses

jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 344
14 janv. 2019 à 10:26
Bonjour,

Peut-être ceci :
http://www.devx.com/vb2themax/Tip/19137

EnumRegistryKeys - Retrieve all the subkeys of a Registry key
Private Declare Function RegOpenKeyEx Lib "advapi32.dll" Alias "RegOpenKeyExA" _
    (ByVal hKey As Long, ByVal lpSubKey As String, ByVal ulOptions As Long, _
    ByVal samDesired As Long, phkResult As Long) As Long
Private Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As _
    Long
Private Declare Function RegEnumKey Lib "advapi32.dll" Alias "RegEnumKeyA" _
    (ByVal hKey As Long, ByVal dwIndex As Long, ByVal lpName As String, _
    ByVal cbName As Long) As Long

Const KEY_READ = &H20019  ' ((READ_CONTROL Or KEY_QUERY_VALUE Or 
                          ' KEY_ENUMERATE_SUB_KEYS Or KEY_NOTIFY) And (Not 
                          ' SYNCHRONIZE))

' Enumerate registry keys under a given key
'
' returns a collection of strings

Function EnumRegistryKeys(ByVal hKey As Long, ByVal KeyName As String) As _
    Collection
    Dim handle As Long
    Dim length As Long
    Dim index As Long
    Dim subkeyName As String
    
    ' initialize the result collection
    Set EnumRegistryKeys = New Collection
    
    ' Open the key, exit if not found
    If Len(KeyName) Then
        If RegOpenKeyEx(hKey, KeyName, 0, KEY_READ, handle) Then Exit Function
        ' in all case the subsequent functions use hKey
        hKey = handle
    End If
    
    Do
        ' this is the max length for a key name
        length = 260
        subkeyName = Space$(length)
        ' get the N-th key, exit the loop if not found
        If RegEnumKey(hKey, index, subkeyName, length) Then Exit Do
        
        ' add to the result collection
        subkeyName = Left$(subkeyName, InStr(subkeyName, vbNullChar) - 1)
        EnumRegistryKeys.Add subkeyName, subkeyName
        ' prepare to query for next key
        index = index + 1
    Loop
   
    ' Close the key, if it was actually opened
    If handle Then RegCloseKey handle
        
End Function


0
Herve_be Messages postés 1016 Date d'inscription mercredi 4 août 2010 Statut Membre Dernière intervention 24 avril 2024 2
14 janv. 2019 à 15:42
Merci !
0
Rejoignez-nous