IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Settings et multi comptes [Débutant]


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 63
    Par défaut Settings et multi comptes
    Bonjour.
    Comment puis je gérer les paramètres de plusieurs comptes ?
    J'ai une appli c# ou l'on rentre son login password et ça charge en gros 200 paramètres stocké dans un fichier texte.
    Ca fonctionne très bien mais depuis que j'ai utilisé le fichier setting je trouve ça bien plus pratique et sécurisé.
    Mon problème c'est que chaque compte a ses paramètres et apparemment le fichier setting ne sert que pour un lancement unique de l'application et ce n'est pas mon cas je peu avoir 10 lancement de l'appli(ou plus) qui tournent en même temps sur 10 comptes différent.

    Y a t'il possibilité que l'appli crée des lignes dans le fichier setting comme ça je crée mes 200 paramètres de base que je dupplique à chaque nouveau compte en rajoutant dans le nom du setting le login:
    Nom Type Valeur
    str1 string oui
    truc@machin.fr_str1 string non
    chose@bidule.fr_str1 string oui

    Auriez vous une solution à me proposer ?

  2. #2
    Membre très actif
    Profil pro
    Inscrit en
    Mai 2011
    Messages
    508
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 508
    Par défaut
    Ton truc m'a l'air de marché comme une base de données.

    Parce que un settings, ne dois pas changer dans le temps. Donc c'est de la configuration pour l'application ou pour environnement d'une machine ou pour un environnement de développement.

    Si c'est un settings personnalisé pour 200 comptes. c'est ce qu'on appelle des préférences. Alors à ce moment il est préférable d’utiliser une base de données.

    Si tu souhaite vraiment faire ce que tu veux faire (u_u vivement déconseillé) alors tu peux toujours pseudo crée une base de données dans ton settings. En gros des tags pour un utilisateur en particulier.

    Et traiter ton fichier comme un fichier XML.

  3. #3
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Quand tu dis "plusieurs comptes", tu parles de comptes Windows ?

    Dans le fichier settings.settings, tu peux définir le scope de chaque setting : user ou application.

    - les settings de scope "user" sont spécifiques à chaque utilisateur Windows, et sont stockés dans un fichier user.config dans un dossier un peu planqué du profil de l'utilisateur Windows
    - les settings de scope "application" sont globaux et sont stockés dans le fichier TonAppli.exe.config, à côté de l'exécutable

  4. #4
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 198
    Par défaut
    les settings de type application ne sont pas modifiables, et les settings de type user ne permettent pas d'avoir des paramètres liés à tout le monde

    pour des settings partagés tu peux rester en fichier, on peut obtenir le dossier de paramètres de l'application dans les specialfolders, tu peux donc avoir un dossier accessible depuis tous les users windows, ou un dossier accessible depuis le user connecté
    tu peux donc avoir des paramètres d'appli et d'autres de users

    pour gérer le codage du fichier tu peux utiliser la sérialisation xml (ou binaire si tu veux que ca soit illisible), en 2 lignes de code tu peux sauvegarder tout ou lire tout dans des "variables", après il ne reste plus qu'à lire les variables
    tu peux en rajouter dans le temps dans le code avec une valeur par défaut, ca sera rajouté au fichier à la prochaine sauvegarde

    après je dit variable entre guillement car au niveau du code le mieux est une classe avec singleton et une propriété par setting à sauvegarder
    donc de n'importe où tu peux appeler le singleton pour voir utiliser ou modifier d'une propriété (éventuellement 2 singletons pour settings appli/user)


    au final ca reste plus simple qu'une base de données à faire évoluer (juste à rajouter des propriétés)
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  5. #5
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 63
    Par défaut
    Excusez moi j’étais indisponible.
    En fait mon programme est une espèce de "bot" avec beaucoup de réglages (120 checkbox entre autre)
    Donc je lance mon programme rentre mon login/password et ça charge les paramètres associé au login et les sauve en quitant.
    Et donc je peu avoir 2,3,4... fois mon programme lancé sur autant de login/password différent.

    Donc actuellement j'ai des fichier texte de sauvegarde du type : monadresse@detest.com.txt avec dedans <login>monadresse@detest.com</login><password>123456</password><cb1>true</cb1><cb2>false</cb2>.....
    valeur que je récupère à coup de Regex.Match
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    string path = Path.GetDirectoryName(Assembly.GetExecutingAssembly().GetModules()[0].FullyQualifiedName) + @"\settings\profiles\" + this.VerifiedLogin + ".txt";
                if (System.IO.File.Exists(path))
                {
                    string str3;
                    int num = 0;
                    StreamReader reader = new StreamReader(path);
                    while ((str3 = reader.ReadLine()) != null)
                    {
                        string str9;
                        Match match = Regex.Match(str3, "<cb1>(.*?)</cb1>");
                        if (match.Success)
                        {
                            str9 = Regex.Replace(Regex.Replace(match.ToString(), "<cb1>", ""), "</cb1>", "");
                            switch (str9)
                            {
                                case "True":
                                    this.checkBox1.Checked = true;
                                    break;
     
                                case "False":
                                    this.checkBox1.Checked = false;
                                    break;
                            }
                        }
                        match = Regex.Match(str3, "<cb2>(.*?)</cb2>");
                        if (match.Success)
                        {
                            str9 = Regex.Replace(Regex.Replace(match.ToString(), "<cb2>", ""), "</cb2>", "");
                            switch (str9)
                            {
                                case "True":
                                    this.checkBox2.Checked = true;
                                    break;
     
                                case "False":
                                    this.checkBox2.Checked = false;
                                    break;
                            }
                        }
    Soit actuellement 2800 lignes pour charger les checkbox textbox domainupdown etc etc...
    Je cherche un moyen d'alléger ça et de sécuriser au moins les mots de passe qui sont en clair.

  6. #6
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Pour sécuriser le mot de passe, tu peux utiliser ça :
    http://www.thomaslevesque.fr/2013/05...rotection-api/

    Pour le reste... bah déjà si tes settings sont en XML, les regex sont à peu près la plus mauvaise façon possible de les lire
    Il y a au moins 4 façons de lire un fichier XML en .NET :
    - XmlReader
    - XmlDocument
    - Linq to XML (XDocument)
    - sérialisation XML

    Pour des settings, je trouve généralement que le plus pratique est la sérialisation XML (voir tuto). Mais dans ton cas, il y a un très grand nombre de settings, donc il vaut peut-être mieux utiliser une solution plus facilement extensible, comme Linq to XML.

    Enfin il faudrait un moyen de généraliser la restauration de l'état d'une CheckBox, sans le faire manuellement pour chaque. Mais pour ça il faudrait qu'il y ait un lien entre le nom de la CheckBox et le nom du setting dans le fichier...

  7. #7
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 63
    Par défaut
    merci à vous

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Blog] Cherche script de blogs multi comptes
    Par guiguistuder dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 19
    Dernier message: 17/11/2008, 22h32

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo