Registre [Résolu]

Signaler
Messages postés
56
Date d'inscription
mardi 17 mai 2005
Statut
Membre
Dernière intervention
4 mai 2020
-
 JPM -
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

7 réponses

Messages postés
2171
Date d'inscription
samedi 11 janvier 2014
Statut
Contributeur
Dernière intervention
11 juillet 2020
110
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 !

Messages postés
14482
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
14 juillet 2020
420
Bonjour

Un question similaire a été postée ce matin.
Y’a p’tet des éléments de réponse en la consultant.....
Messages postés
2171
Date d'inscription
samedi 11 janvier 2014
Statut
Contributeur
Dernière intervention
11 juillet 2020
110
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
Messages postés
56
Date d'inscription
mardi 17 mai 2005
Statut
Membre
Dernière intervention
4 mai 2020
1
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
Messages postés
56
Date d'inscription
mardi 17 mai 2005
Statut
Membre
Dernière intervention
4 mai 2020
1
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
Messages postés
2171
Date d'inscription
samedi 11 janvier 2014
Statut
Contributeur
Dernière intervention
11 juillet 2020
110
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 .
@ ++


Messages postés
56
Date d'inscription
mardi 17 mai 2005
Statut
Membre
Dernière intervention
4 mai 2020
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
Messages postés
2171
Date d'inscription
samedi 11 janvier 2014
Statut
Contributeur
Dernière intervention
11 juillet 2020
110
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 !
Merci et bonne journée
JPM