Ecrire sur la base de registre [Résolu]

Classico 38 Messages postés vendredi 17 décembre 2010Date d'inscription 8 février 2011 Dernière intervention - 12 janv. 2011 à 13:53 - Dernière réponse : Classico 38 Messages postés vendredi 17 décembre 2010Date d'inscription 8 février 2011 Dernière intervention
- 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
Afficher la suite 

13 réponses

Répondre au sujet
cs_Robert33 835 Messages postés samedi 15 novembre 2008Date d'inscription 14 janvier 2017 Dernière intervention - 27 janv. 2011 à 13:54
+3
Utile
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!
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de cs_Robert33
Classico 38 Messages postés vendredi 17 décembre 2010Date d'inscription 8 février 2011 Dernière intervention - 28 janv. 2011 à 09:58
+3
Utile
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();
             }

         } 
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de Classico
cs_Robert33 835 Messages postés samedi 15 novembre 2008Date d'inscription 14 janvier 2017 Dernière intervention - 16 janv. 2011 à 12:04
0
Utile
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!
Commenter la réponse de cs_Robert33
Classico 38 Messages postés vendredi 17 décembre 2010Date d'inscription 8 février 2011 Dernière intervention - 17 janv. 2011 à 09:59
0
Utile
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
Commenter la réponse de Classico
Classico 38 Messages postés vendredi 17 décembre 2010Date d'inscription 8 février 2011 Dernière intervention - 17 janv. 2011 à 10:09
0
Utile
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
Commenter la réponse de Classico
cs_Robert33 835 Messages postés samedi 15 novembre 2008Date d'inscription 14 janvier 2017 Dernière intervention - 21 janv. 2011 à 20:29
0
Utile
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!
Commenter la réponse de cs_Robert33
Classico 38 Messages postés vendredi 17 décembre 2010Date d'inscription 8 février 2011 Dernière intervention - 22 janv. 2011 à 11:32
0
Utile
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
Commenter la réponse de Classico
cs_Robert33 835 Messages postés samedi 15 novembre 2008Date d'inscription 14 janvier 2017 Dernière intervention - 22 janv. 2011 à 14:26
0
Utile
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!
Commenter la réponse de cs_Robert33
Classico 38 Messages postés vendredi 17 décembre 2010Date d'inscription 8 février 2011 Dernière intervention - 24 janv. 2011 à 16:23
0
Utile
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
Commenter la réponse de Classico
Classico 38 Messages postés vendredi 17 décembre 2010Date d'inscription 8 février 2011 Dernière intervention - 24 janv. 2011 à 16:31
0
Utile
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
Commenter la réponse de Classico
Classico 38 Messages postés vendredi 17 décembre 2010Date d'inscription 8 février 2011 Dernière intervention - 24 janv. 2011 à 16:47
0
Utile
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
Commenter la réponse de Classico
BunoCS 13773 Messages postés lundi 11 juillet 2005Date d'inscription 24 avril 2018 Dernière intervention - 24 janv. 2011 à 16:50
0
Utile
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
Commenter la réponse de BunoCS
Classico 38 Messages postés vendredi 17 décembre 2010Date d'inscription 8 février 2011 Dernière intervention - 28 janv. 2011 à 10:00
0
Utile
mais votre methode à l'air mieux et plus complète

vais tester merci
Commenter la réponse de Classico

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.