Registre [Résolu]

Messages postés
53
Date d'inscription
mardi 17 mai 2005
Statut
Membre
Dernière intervention
21 novembre 2019
- - Dernière réponse :  JPM - 22 nov. 2019 à 09:09
Bonjour,

En mode programmation, pour lister les répertoires du registre CurrentUser :

My.Computer.Registry.CurrentUser.GetSubKeyNames


mais pour lister les sous-répertoires du registre, par ex. ceux de /CurrentUser/Software/, comment faire ?
Grand merci
Afficher la suite 

7 réponses

Meilleure réponse
Messages postés
1979
Date d'inscription
samedi 11 janvier 2014
Statut
Contributeur
Dernière intervention
5 décembre 2019
77
1
Merci
Bonsoir
Teste ceci
Imports Microsoft.Win32

Public Class Form1
    Private Sub Button11_Click(sender As Object, e As EventArgs) Handles Button11.Click

        ' on prend le chemin complet de la clé à tester 
        Dim MyKey As RegistryKey = Registry.CurrentUser.OpenSubKey("Software\\JPM\\FSL", True)
        If MyKey Is Nothing Then
            ' la clé n'existe pas : on la crée avec les différentes sous-clés
            MyKey = Registry.CurrentUser.CreateSubKey("Software\\JPM\\FSL")
        End If
        ' adaptation des valeurs dans HKEY_CurrentUser\Software\JPM\FSL
        ' si la clé ne contient aucune paire Data-Valeur on crée les 4 paires
        If MyKey.GetValueNames.Length = 0 Then
            MyKey.SetValue("Lecteur1", "Françoise")
            MyKey.SetValue("Lecteur2", "Jean-Paul")
            MyKey.SetValue("GestionPrix", "Oui")
            MyKey.SetValue("FrontPage", "Films-Alpha")
        End If

    End Sub

End Class


N'oublie pas l'Imports en début de code de la Form ;
Chez moi cela fonctionne nickel avec les mêmes paramètres que toi .

Comme tu peux le constater mon code est colorié et plus lisible : regarde ici pour poster du code correctement sur le forum : https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
Merci !

Dire « Merci » 1

Heureux de vous avoir aidé ! Vous nous appréciez ? Donnez votre avis sur nous ! Evaluez CodeS-SourceS

Codes Sources 203 internautes nous ont dit merci ce mois-ci

Commenter la réponse de vb95
Messages postés
14029
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
8 décembre 2019
322
0
Merci
Bonjour

Un question similaire a été postée ce matin.
Y’a p’tet des éléments de réponse en la consultant.....
Commenter la réponse de Whismeril
Messages postés
1979
Date d'inscription
samedi 11 janvier 2014
Statut
Contributeur
Dernière intervention
5 décembre 2019
77
0
Merci
Bonsoir !
Attention à la terminologie : la base de registre ne contient aucun répertoire ni aucun sous-répertoire .
On parle ici de clés et de sous-clés qui contiennent des Data de type variable : String, Numérique ou autre .

Merci pour cet essentiel complément de réponse !
jpm
Commenter la réponse de vb95
Messages postés
53
Date d'inscription
mardi 17 mai 2005
Statut
Membre
Dernière intervention
21 novembre 2019
1
0
Merci
Bonjour,
Voici "ma"synthèse d'accès au registre avec
- count / affichage / création / accès read only de "répertoires-noeuds", clés
- ajout / modif de valeurs ...

    Private Sub Button11_Click(sender As Object, e As EventArgs) Handles Button11.Click
'
' Création et/ou accès à valeurs dans un clé de registre en HKEY_CurrentUser/Software/JPM/FSL
'
'
        Dim subKeyName As String
        Dim tempKey As RegistryKey
        Dim MyRepertoire As RegistryKey   ' JPM
        Dim MyKey As RegistryKey          ' FSL
        Dim MyNoeud As RegistryKey = Registry.CurrentUser.OpenSubKey("Software", True)      ' true pour accès en écriture


        If MyNoeud.SubKeyCount > 0 Then
            For Each subKeyName In MyNoeud.GetSubKeyNames()
                tempKey = MyNoeud.OpenSubKey(subKeyName)    'accès sans écriture
                If tempKey.Name.ToString.EndsWith("JPM") Then
                    MessageBox.Show("Le répertoire " & tempKey.Name.ToString & " existe")
                    MyRepertoire = MyNoeud.OpenSubKey("JPM", True)
                Else
                    MyRepertoire = MyNoeud.CreateSubKey("JPM", True)
                End If
            Next
        Else
            MyRepertoire = MyNoeud.CreateSubKey("JPM", True)
        End If

        If MyRepertoire.SubKeyCount > 0 Then
            For Each subKeyName In MyRepertoire.GetSubKeyNames()
                tempKey = MyRepertoire.OpenSubKey(subKeyName)    'accès sans écriture
                If tempKey.Name.ToString.EndsWith("FSL") Then
                    MessageBox.Show("La clé " & tempKey.Name.ToString & " existe")
                    MyKey = MyRepertoire.OpenSubKey("FSL", True)
                Else
                    MyKey = MyRepertoire.CreateSubKey("FSL", True)
                End If
            Next
        Else
            MyKey = MyRepertoire.CreateSubKey("FSL", True)
        End If

        ' adaptation des valeurs dans HKEY_CurrentUser/Software/JPM/FSL
        MyKey.SetValue("Lecteur1", "Françoise")
        MyKey.SetValue("Lecteur2", "Jean-Paul")
        MyKey.SetValue("GestionPrix", "Oui")
        MyKey.SetValue("FrontPage", "Films-Alpha")

    End Sub 


Merci de l'aide

JPM
Commenter la réponse de jpmaton
Messages postés
53
Date d'inscription
mardi 17 mai 2005
Statut
Membre
Dernière intervention
21 novembre 2019
1
0
Merci
Bonjour,
Super, c'est encore plus concis.
Quant à la présentation de mon code, je l'avais bien envoyé dans le format adéquat via :
 et il m'apparaît d'ailleurs présenté comme le tien et... en couleurs (vert, noir et rouge).

Merci & Bonne journée

JPM
Commenter la réponse de jpmaton
Messages postés
1979
Date d'inscription
samedi 11 janvier 2014
Statut
Contributeur
Dernière intervention
5 décembre 2019
77
0
Merci
Bonjour
Content que cela te satisfasse !
Quant à la présentation de ton code regarde en dessous de "JPM" : c'est marqué "modifié par @karamel le 19/11/2019 à 23:19"
C'est un modérateur qui a ajouté la coloration syntaxique liée au VB Net : ce qui explique le fait que tu le vois coloré comme le mien .
@ ++


jpmaton
Messages postés
53
Date d'inscription
mardi 17 mai 2005
Statut
Membre
Dernière intervention
21 novembre 2019
1 -
Bonjour,
OK, j'ai vu la note et... j'ai compris mon erreur !!!
J'avais mis <code > ..... </code >
au lieu de
<code basic > ..... </code >

Enfin, pour ma gouverne, pourquoi as-tu mis des doubles backSlash \\ dans tes analyses de SubKey, alors qu'un simple backSlash paraît suffire (j'ai testé).

Merci et bonne journée
Commenter la réponse de vb95
Messages postés
1979
Date d'inscription
samedi 11 janvier 2014
Statut
Contributeur
Dernière intervention
5 décembre 2019
77
0
Merci
Bonsoir !
Je travaille très rarement avec la base de registres et c'est en fouinant sur le Net que j'ai vu que l'on pouvait spécifier la clé à atteindre avec son chemin complet .
Et l'exemple que j'avais trouvé avait des doubles backslash et je les ai laissés . Mais c'est vrai qu'il est plus logique que ce soit des simples comme on fait pour les répertoires dans l"explorateur de fichiers
bonne journée à vous aussi !
Commenter la réponse de vb95