Ecrire sur la base de registre

[Résolu]
Signaler
Messages postés
38
Date d'inscription
vendredi 17 décembre 2010
Statut
Membre
Dernière intervention
8 février 2011
-
Messages postés
38
Date d'inscription
vendredi 17 décembre 2010
Statut
Membre
Dernière intervention
8 février 2011
-
Bonjour,

voilà je travaille sur un windows form
avec 2 textbox pour une authentification (username et mot de passe).

Ce que je souhaite c'est enregistrer sur la base de registre.
voici mon code :
 //Fonction qui écrit le mot de passe dans la base de registre windows
        private void WriteValue()
        {
            string sPassWord = "";
            RegistryKey Nkey = Registry.CurrentUser;

            try
            {
                RegistryKey valKey =
                Nkey.OpenSubKey("Software\\enregistrement\\MyKey", true);

                if(valKey == null)
                {
                    Nkey.CreateSubKey("Software\\enregistrement\\MyKey");
                }

                valKey.SetValue("MyKeyValue", sPassWord) ;
            }
            catch(Exception er)
            {
                MessageBox.Show(er.Message, "enregistrement", MessageBoxButtons.OK, MessageBoxIcon.Stop);
            }
            finally
            {
                Nkey.Close();
            }
        } 


ensuite je suis allé vérifié si quelque chose avait bien été écrit, et je n'ai rien trouvé.

Pour préciser j'ai appelé la fonction qui écrit dans l'evenement click du bouton valider
de cette manière ci :

WriteValue();


Est ce qu'il manque quelque chose ????

merci pour vos réponses

cordialement

13 réponses

Messages postés
834
Date d'inscription
samedi 15 novembre 2008
Statut
Membre
Dernière intervention
14 janvier 2017
32
Bonjour

Si tu veux un historique des connexions, avec les codes d'identification correspondants
il va falloir que tu utilises un tableau de chaines, la base de registre sait gerer le type REG_MULTI_SZ tableau de chaines terminées par null.
exemple:
    RegistryKey Nkey = Registry.CurrentUser;
    //Liste de password
    List<string> Passwords = new List<string>();

    //Lecture de l'historique
    try
    {
        RegistryKey valKey = Nkey.OpenSubKey("Software\\enregistrement\\MyKey", true);
        if (valKey != null)
        {
            object retvalues = valKey.GetValue("MyKeyValue");
            if (retvalues != null)
                Passwords = new List<string>((string[])retvalues);
        }
    }
    catch (Exception er)
    {
        MessageBox.Show(er.Message, "enregistrement", MessageBoxButtons.OK, MessageBoxIcon.Stop);
    }
    finally
    {
        Nkey.Close();
    }

    //Ajout d'un nouveau password
    Passwords.Add("Nouveau password");
    try
    {
        RegistryKey valKey = Nkey.OpenSubKey("Software\\enregistrement\\MyKey", true);
        if (valKey == null)
            valKey =Nkey.CreateSubKey("Software\\enregistrement\\MyKey");

        valKey.SetValue("MyKeyValue", Passwords.ToArray());
    }
    catch (Exception er)
    {
        MessageBox.Show(er.Message, "enregistrement", MessageBoxButtons.OK, MessageBoxIcon.Stop);
    }
    finally
    {
        Nkey.Close();
    }


Bob.
C# is amazing, enjoy it!
Messages postés
38
Date d'inscription
vendredi 17 décembre 2010
Statut
Membre
Dernière intervention
8 février 2011

bonjour bob,

merci pour votre réponse, j'ai pu le régler comme suit :

 // Fonction qui écrit les données d'authentification dans la base de registre windows
         private void WriteValue(string MotDePasse, string UserName, string URL)
         {

             RegistryKey Nkey = Registry.CurrentUser;

             try
             {
                 RegistryKey valKey =
                 Nkey.OpenSubKey("Software\\Amenothes\\MyKey", true);

                 if(valKey == null)
                 {
                     Nkey.CreateSubKey("Software\\Amenothes\\MyKey");
                 }

                 valKey.SetValue("Password", toMD5(txtBoxMDP.Text));
                 valKey.SetValue("UserName", txtBoxUserName.Text);
                 valKey.SetValue("URL", txtBoxURL.Text);
             }

             catch(Exception er)
             {
                 MessageBox.Show(er.Message, "Amenothes", MessageBoxButtons.OK, MessageBoxIcon.Stop);
             }
             finally
             {
                 Nkey.Close();
             }

         } 
Messages postés
834
Date d'inscription
samedi 15 novembre 2008
Statut
Membre
Dernière intervention
14 janvier 2017
32
Bonjour

As-tu une exception ?

Note: to code ne fonctionne pas la premiere fois, si la clef n'existe pas, il manque l'affectation
if (valKey == null)
{
valKey = Nkey.CreateSubKey("Software\\enregistrement\\MyKey");
}

Si non il semble correct, et devrait generer la clef HKEY_CURRENT_USER\Software\enregistrement\MyKey
est-ce celle-ci que tu as vérifié?


Bob.
C# is amazing, enjoy it!
Messages postés
38
Date d'inscription
vendredi 17 décembre 2010
Statut
Membre
Dernière intervention
8 février 2011

salut bob,

merci pour ta réponse. Non je n'ai pas d'exception.
Par contre par rapport à la clé ce n'est pas celle-ci que j'ai vérifié.
Donc je regarde ça tout de suite.

Merci pour les précisions

je te retiens au courant

a+

classico
Messages postés
38
Date d'inscription
vendredi 17 décembre 2010
Statut
Membre
Dernière intervention
8 février 2011

Alors voici que je trouve dans :

HKEY_CURRENT_USER\Software\enregistrement\MyKey

NOM TYPE DONNEES
(par défaut) REG_SZ (valeur non définie)
MyKeyValue REG_SZ
Messages postés
834
Date d'inscription
samedi 15 novembre 2008
Statut
Membre
Dernière intervention
14 janvier 2017
32
Bonsoir

ça me parait correct comme résultat, non ?
un champ MyKeyValue de type string sous HKEY_CURRENT_USER\Software\enregistrement\MyKey
ce n'est pas ce que tu voulais obtenir ?

Bob.
C# is amazing, enjoy it!
Messages postés
38
Date d'inscription
vendredi 17 décembre 2010
Statut
Membre
Dernière intervention
8 février 2011

salut bob,

oui c'est bien ça en fait j'ai tester en effaçant puis en s'authentifiant et ça
revient. Mais le truc c'est que je pensais que j'allais récupérer le mot de passe tel
qu'il est enregistré avec le nom-utilisateur

merci de m'apporter des précisions
Messages postés
834
Date d'inscription
samedi 15 novembre 2008
Statut
Membre
Dernière intervention
14 janvier 2017
32
Bonjour

La valeur de la clef doit être affichée à droite ou si tu ouvres la clef tu dois voir la valeur.
S'il n'y a rien c'est que ta variable "sPassWord" etait vide.

essaie une écriture en dure genre :
valKey.SetValue("MyKeyValue", "coucou") ;

Bob.
C# is amazing, enjoy it!
Messages postés
38
Date d'inscription
vendredi 17 décembre 2010
Statut
Membre
Dernière intervention
8 février 2011

Bonjour bob

merci

effectivement en mettant le petit "coucou" que tu m'a conseillé,
j'ai bien ce dernier qui s'affiche dans données (ds ma base de registre).

Donc je dois avoir un problème avec spassword

vais essayé de régler ça
Messages postés
38
Date d'inscription
vendredi 17 décembre 2010
Statut
Membre
Dernière intervention
8 février 2011

en effet avec sPassword quand je m'authentifie pour effectuer un test
cela me rajoute un TYPE (REG_SZ), mais aucune valeur lui est associé.

pourtant je met bien un mot de passe avant de valider
Messages postés
38
Date d'inscription
vendredi 17 décembre 2010
Statut
Membre
Dernière intervention
8 février 2011

excuse moi encore bob,

en réalité ce que je cherche c'est qu'au moyen d'une authentification
que toutes mes valeurs s'écrivent sur la base de registre.
De plus ce que je souhaite également, c'est qu'à chaque enregistrement
effectué, un utilisateur s'ajoute sur la base de registre.

Si c'est possible biensûr.

Car dans mon cas même si je m'authentifie plusieurs fois, (avec des mots de passe
différents biensur), j'ai quand meme qu'une ligne d'ajouté et sans les données.

je sais pas si tu ma compris
Messages postés
15154
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
19 octobre 2021
99
string sPassWord = "";
...
valKey.SetValue("MyKeyValue", sPassWord) ;

Faut pas s'étonner ce ce que ton champ soit vide...car c'est ce que tu lui demandes...

@+
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
Rejoignez mon réseau professionnel sur Viadeo
Messages postés
38
Date d'inscription
vendredi 17 décembre 2010
Statut
Membre
Dernière intervention
8 février 2011

mais votre methode à l'air mieux et plus complète

vais tester merci