Lire une sub-key du registre [Résolu]

Messages postés
437
Date d'inscription
mercredi 4 août 2010
Dernière intervention
15 janvier 2019
- - Dernière réponse : Herve_be
Messages postés
437
Date d'inscription
mercredi 4 août 2010
Dernière intervention
15 janvier 2019
- 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 ?
Afficher la suite 

Votre réponse

2 réponses

Messages postés
23977
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
15 janvier 2019
2125
0
Merci
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


Commenter la réponse de jordane45
Messages postés
437
Date d'inscription
mercredi 4 août 2010
Dernière intervention
15 janvier 2019
0
Merci
Merci !
Commenter la réponse de Herve_be

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.