Vérifier l'existence clé registre [Résolu]

Messages postés
159
Date d'inscription
samedi 29 septembre 2012
Dernière intervention
21 juin 2016
- - Dernière réponse : edwinzap
Messages postés
159
Date d'inscription
samedi 29 septembre 2012
Dernière intervention
21 juin 2016
- 20 déc. 2013 à 17:15
Bonjour,

Voici mon problème. En cherchant comment faire pour manipuler le registre, j'ai réussi à faire ce code:
Private Sub DémarrageAuto_True()
        Try

            Dim Cle As Microsoft.Win32.RegistryKey = Microsoft.Win32.Registry.CurrentUser.OpenSubKey("Software\Microsoft\Windows\CurrentVersion\Run", True)
            Cle.SetValue("Compteur", My.Application.Info.DirectoryPath & "\Compteur.exe")

        Catch ex As Exception
            MsgBox(ex.Message)
        End Try
    End Sub


Je crée ainsi la clé dans le registre.

Je voudrais vérifier l'existence de cette clé avec ce code:
Try
                DémarrageAuto_True()
                Dim test As Microsoft.Win32.RegistryKey = Microsoft.Win32.Registry.CurrentUser.OpenSubKey("Software\Microsoft\Windows\CurrentVersion\Run\Compteur", True)

                If test Is Nothing Then
                    MsgBox("la clé n'existe pas")
                Else
                    MsgBox("la clé existe")
                End If
            Catch ex As Exception
                MsgBox(ex.ToString)
            End Try


Le test me renvoit à chaque fois Nothing alors que je viens juste de la créer !!!

Aidez moi svp, merci !
Afficher la suite 

Votre réponse

5 réponses

Messages postés
23600
Date d'inscription
mercredi 22 octobre 2003
Statut
Contributeur
Dernière intervention
13 décembre 2018
0
Merci
Bonjour,
Essayes peut-être de doubler les anti-Slash.
Commenter la réponse de jordane45
Messages postés
23600
Date d'inscription
mercredi 22 octobre 2003
Statut
Contributeur
Dernière intervention
13 décembre 2018
Commenter la réponse de jordane45
Messages postés
159
Date d'inscription
samedi 29 septembre 2012
Dernière intervention
21 juin 2016
0
Merci
J'ai tout regarder, et ça ne marche tjrs pas !
J'ai modifié le code:

Création de la clé:
            Dim Cle As RegistryKey = Registry.CurrentUser.CreateSubKey("Software\\Microsoft\\Windows\\CurrentVersion\\Run")
            Cle.SetValue("Compteur", My.Application.Info.DirectoryPath & "\Compteur.exe", RegistryValueKind.String)


Vérification que la clé existe:
                Dim value As String
                value = Microsoft.Win32.Registry.CurrentUser.GetValue("Software\\Microsoft\\Windows\\CurrentVersion\\Run\\Compteur")

                If value IsNot Nothing Then
                    MsgBox("la clé existe")
                Else
                    MsgBox("la clé n'existe pas")
                End If


Il me renvoi tjrs Nothing !
Commenter la réponse de edwinzap
Messages postés
5603
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
13 décembre 2018
0
Merci
Bonjour,

Essaie cela:

 Dim test As Microsoft.Win32.RegistryKey = My.Computer.Registry.CurrentUser.OpenSubKey("Software\Microsoft\Windows\CurrentVersion\Run\Compteur",False)
If test Is Nothing Then
MsgBox("la clé existe")
Else
MsgBox("la clé n'existe pas")
End If

Il faut essayer d'ouvrir la clé pour voir si elle existe!
Commenter la réponse de cs_Le Pivert
Messages postés
159
Date d'inscription
samedi 29 septembre 2012
Dernière intervention
21 juin 2016
0
Merci
Effectivement, il fallait essayer d'ouvrir la clé. Merci à Jordane45 pour les liens. Cela m'a fortement aidé.
En fait je ne comprenais pas correctement la hiérarchie de la base de registre. Voici mon code:

Dim key = Microsoft.Win32.Registry.CurrentUser.OpenSubKey("Software\\Microsoft\\Windows\\CurrentVersion\\Run", True)
            Dim value = key.GetValue("compteur")
            If value Is Nothing Then
                key = Microsoft.Win32.Registry.CurrentUser.CreateSubKey("Software\\Microsoft\\Windows\\CurrentVersion\\Run")
                key.SetValue("Compteur", My.Application.Info.DirectoryPath & "\Compteur.exe", RegistryValueKind.String)
                key.Close()
                Me.DémarrageAutoToolStripMenuItem.Text = "&Désactiver"
            Else
                key.DeleteValue("Compteur")
                Me.DémarrageAutoToolStripMenuItem.Text = "&Activer"
            End If


Encore merci !

Sujet résolu, mais je suis tjrs preneur pour des améliorations du code !
Commenter la réponse de edwinzap

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.