Registre

Résolu
jpmaton
Messages postés
61
Date d'inscription
mardi 17 mai 2005
Statut
Membre
Dernière intervention
27 avril 2022
- 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
2629
Date d'inscription
samedi 11 janvier 2014
Statut
Modérateur
Dernière intervention
13 mai 2022
151
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 !

1
Whismeril
Messages postés
17331
Date d'inscription
mardi 11 mars 2003
Statut
Modérateur
Dernière intervention
17 mai 2022
596
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.....
0
vb95
Messages postés
2629
Date d'inscription
samedi 11 janvier 2014
Statut
Modérateur
Dernière intervention
13 mai 2022
151
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 .

0
Merci pour cet essentiel complément de réponse !
jpm
0
jpmaton
Messages postés
61
Date d'inscription
mardi 17 mai 2005
Statut
Membre
Dernière intervention
27 avril 2022
1
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
0

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

Posez votre question
jpmaton
Messages postés
61
Date d'inscription
mardi 17 mai 2005
Statut
Membre
Dernière intervention
27 avril 2022
1
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
0
vb95
Messages postés
2629
Date d'inscription
samedi 11 janvier 2014
Statut
Modérateur
Dernière intervention
13 mai 2022
151
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 .
@ ++


0
jpmaton
Messages postés
61
Date d'inscription
mardi 17 mai 2005
Statut
Membre
Dernière intervention
27 avril 2022
1
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
2629
Date d'inscription
samedi 11 janvier 2014
Statut
Modérateur
Dernière intervention
13 mai 2022
151
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 !
0
Merci et bonne journée
JPM
0