Ecrire sur la base de registre

Résolu
Classico Messages postés 38 Date d'inscription vendredi 17 décembre 2010 Statut Membre Dernière intervention 8 février 2011 - 12 janv. 2011 à 13:53
Classico Messages postés 38 Date d'inscription vendredi 17 décembre 2010 Statut Membre Dernière intervention 8 février 2011 - 28 janv. 2011 à 10:00
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

cs_Robert33 Messages postés 834 Date d'inscription samedi 15 novembre 2008 Statut Membre Dernière intervention 14 janvier 2017 33
27 janv. 2011 à 13:54
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!
3
Classico Messages postés 38 Date d'inscription vendredi 17 décembre 2010 Statut Membre Dernière intervention 8 février 2011
28 janv. 2011 à 09:58
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();
             }

         } 
3
cs_Robert33 Messages postés 834 Date d'inscription samedi 15 novembre 2008 Statut Membre Dernière intervention 14 janvier 2017 33
16 janv. 2011 à 12:04
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!
0
Classico Messages postés 38 Date d'inscription vendredi 17 décembre 2010 Statut Membre Dernière intervention 8 février 2011
17 janv. 2011 à 09:59
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
0

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

Posez votre question
Classico Messages postés 38 Date d'inscription vendredi 17 décembre 2010 Statut Membre Dernière intervention 8 février 2011
17 janv. 2011 à 10:09
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
0
cs_Robert33 Messages postés 834 Date d'inscription samedi 15 novembre 2008 Statut Membre Dernière intervention 14 janvier 2017 33
21 janv. 2011 à 20:29
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!
0
Classico Messages postés 38 Date d'inscription vendredi 17 décembre 2010 Statut Membre Dernière intervention 8 février 2011
22 janv. 2011 à 11:32
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
0
cs_Robert33 Messages postés 834 Date d'inscription samedi 15 novembre 2008 Statut Membre Dernière intervention 14 janvier 2017 33
22 janv. 2011 à 14:26
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!
0
Classico Messages postés 38 Date d'inscription vendredi 17 décembre 2010 Statut Membre Dernière intervention 8 février 2011
24 janv. 2011 à 16:23
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
0
Classico Messages postés 38 Date d'inscription vendredi 17 décembre 2010 Statut Membre Dernière intervention 8 février 2011
24 janv. 2011 à 16:31
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
0
Classico Messages postés 38 Date d'inscription vendredi 17 décembre 2010 Statut Membre Dernière intervention 8 février 2011
24 janv. 2011 à 16:47
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
0
BunoCS Messages postés 15475 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 23 avril 2024 103
24 janv. 2011 à 16:50
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
0
Classico Messages postés 38 Date d'inscription vendredi 17 décembre 2010 Statut Membre Dernière intervention 8 février 2011
28 janv. 2011 à 10:00
mais votre methode à l'air mieux et plus complète

vais tester merci
0
Rejoignez-nous