Registre

Résolu
jpmaton Messages postés 67 Date d'inscription mardi 17 mai 2005 Statut Membre Dernière intervention 26 septembre 2023 - 18 nov. 2019 à 15:33
 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

7 réponses

vb95 Messages postés 3483 Date d'inscription samedi 11 janvier 2014 Statut Contributeur Dernière intervention 17 juillet 2024 169
Modifié le 19 nov. 2019 à 21:39
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 !

Whismeril Messages postés 19099 Date d'inscription mardi 11 mars 2003 Statut Non membre Dernière intervention 23 juillet 2024 661
18 nov. 2019 à 16:03
Bonjour

Un question similaire a été postée ce matin.
Y’a p’tet des éléments de réponse en la consultant.....
vb95 Messages postés 3483 Date d'inscription samedi 11 janvier 2014 Statut Contributeur Dernière intervention 17 juillet 2024 169
Modifié le 19 nov. 2019 à 01:16
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
0
jpmaton Messages postés 67 Date d'inscription mardi 17 mai 2005 Statut Membre Dernière intervention 26 septembre 2023 3
Modifié le 19 nov. 2019 à 23:19
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jpmaton Messages postés 67 Date d'inscription mardi 17 mai 2005 Statut Membre Dernière intervention 26 septembre 2023 3
20 nov. 2019 à 09:34
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
vb95 Messages postés 3483 Date d'inscription samedi 11 janvier 2014 Statut Contributeur Dernière intervention 17 juillet 2024 169
Modifié le 20 nov. 2019 à 15:25
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 67 Date d'inscription mardi 17 mai 2005 Statut Membre Dernière intervention 26 septembre 2023 3
21 nov. 2019 à 09:55
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
0
vb95 Messages postés 3483 Date d'inscription samedi 11 janvier 2014 Statut Contributeur Dernière intervention 17 juillet 2024 169
21 nov. 2019 à 15:31
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
0
Rejoignez-nous