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 :

fichier de configuration [Lecture seule]


Sujet :

C#

  1. #1
    Membre éprouvé Avatar de Antho42
    Profil pro
    Inscrit en
    Février 2009
    Messages
    173
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2009
    Messages : 173
    Par défaut fichier de configuration [Lecture seule]
    Bonjour,

    Je viens de suivre ce petit tuto qui concernent les fichiers de configuration.

    Tuto très pratique et très bien fait mais je me retrouve face à un problème non expliqué dans le tuto.
    Lorsque je veux modifier mon fichier de configuration (de la même manière qu'au point 7 dans le tuto), une exception survient avec comme message d'erreur
    "La configuration est en lecture seule.
    La lecture se passe très bien mais la modification pas moyen
    Que ça soit sur un Add() ou un Remove(), l'exception survient.
    Quelqu'un a une idée de pourquoi ? Ce que je dois faire/changer ?

    Voici le code:
    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
     
    public int InsertValue(string Key, string Value)
            {
                try
                {
                    Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
                    ConfigurationManager.AppSettings.Add(Key, Value);
                    config.Save(ConfigurationSaveMode.Modified);
                    ConfigurationManager.RefreshSection("appSettings");
                    return 0;
                }
                catch (Exception)
                {
                    return -1;
                }
            }

  2. #2
    Membre éprouvé Avatar de Antho42
    Profil pro
    Inscrit en
    Février 2009
    Messages
    173
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2009
    Messages : 173
    Par défaut
    Je tourne en rond ...
    J'ai été voir sur MSDN à cet endroit mais l'exemple dans le code donné qui fait un update fait exactement la même chose que moi...

    Quelqu'un a déjà jouer avec ça ?
    Ou a une autre solution a me proposer ?
    ( Sauvegarde de paramètres dans un fichier avec un principe de couple Key/value )


  3. #3
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 197
    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 197
    Par défaut
    si c'est comme les settings de l'appli, il faut que les paramètres soit de type utilisateur et non application pour etre writable
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  4. #4
    Membre éprouvé Avatar de Antho42
    Profil pro
    Inscrit en
    Février 2009
    Messages
    173
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2009
    Messages : 173
    Par défaut
    Citation Envoyé par sperot51 Voir le message
    si c'est comme les settings de l'appli, il faut que les paramètres soit de type utilisateur et non application pour etre writable
    Et concrètement ça veut dire quoi ?
    Que j'oublie le fichier de configuration ?

    Je comprends pas pourquoi dans le tuto il y arrivait alors ...

  5. #5
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 197
    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 197
    Par défaut
    non, si tu passes les settings en mode utilisateur ils sont modifiables
    par contre le fichier est stocké dans le dossier de l'utilisateur actuel de windows, et chaque utilisateur a ses paramètres
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  6. #6
    Membre éprouvé Avatar de Antho42
    Profil pro
    Inscrit en
    Février 2009
    Messages
    173
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2009
    Messages : 173
    Par défaut
    Citation Envoyé par sperot51 Voir le message
    non, si tu passes les settings en mode utilisateur ils sont modifiables
    Et je fais ça comment ? Il y a très peu de propriétés a App.config

    Citation Envoyé par sperot51 Voir le message
    par contre le fichier est stocké dans le dossier de l'utilisateur actuel de windows, et chaque utilisateur a ses paramètres
    Ça, ça conviendrait parfaitement à la situation, j'imagine que le dossier utilisateur serait donc un truc du style
    C:\Documents and Settings\User\ ??

  7. #7
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 197
    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 197
    Par défaut
    là ou tu as mis ConfigurationUserLevel.None, il faut mettre autre chose


    et en effet ca va dans doc and settings\user\appdata\local\etc...\nomexe.config
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  8. #8
    Membre éprouvé Avatar de Antho42
    Profil pro
    Inscrit en
    Février 2009
    Messages
    173
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2009
    Messages : 173
    Par défaut
    Citation Envoyé par sperot51 Voir le message
    là ou tu as mis ConfigurationUserLevel.None, il faut mettre autre chose
    Merci beaucoup de m'aider mais dans ConfigurationUserLevel j'ai 3 choix :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    ConfigurationUserLevel.PerUserRoamingAndLocal
    ConfigurationUserLevel.PerUserRoaming
    ConfigurationUserLevel.None
    Et peu importe ce que je mets l'exception survient toujours au Add().

    J'ai vu que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ConfigurationManager.OpenExeConfiguration(..)
    pouvait prendre autre chose qu'un ConfigurationUserLevel en paramètre, qu'il y avait moyen de lui passer un string mais je ne sais pas du tout à quoi ça correspond ni si ça résoudrait le problème.

    (Ça commence à me gonfler )

  9. #9
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 197
    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 197
    Par défaut
    ton besoin c'est de rajouter des paramètres pendant l'execution c'est ca ?

    pourquoi ne pas prendre un fichier ini ou une petite base de données ?
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  10. #10
    Membre éprouvé Avatar de Antho42
    Profil pro
    Inscrit en
    Février 2009
    Messages
    173
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2009
    Messages : 173
    Par défaut
    Citation Envoyé par sperot51 Voir le message
    ton besoin c'est de rajouter des paramètres pendant l'execution c'est ca ?

    pourquoi ne pas prendre un fichier ini ou une petite base de données ?
    Ben on dirait bien que c'est ce que je vais devoir faire !
    Comprend pas pourquoi ça fonctionne pas ... tuto a revoir.

    A la base je voudrais un fichier "contenu" dans l'application et pas forcément stocker quelque part dans le profil Utilisateur ou quoi (mais bon apparemment j'en demande trop) donc on va faire un bon gros fichier .ini ou .txt ou quoi avec un principe de "Key"="Value" et utiliser des StreamReader et StreamWriter ...

    [ironie]* joie immense * [/ironie]

  11. #11
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 197
    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 197
    Par défaut
    si tes paramètres sont fixes, les fichier de settings dans les paramètres du projet fonctionne sans écrire ce que tu as écris
    les paramètres sont accessibles via my.Settings.monparam
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  12. #12
    Membre éprouvé Avatar de Antho42
    Profil pro
    Inscrit en
    Février 2009
    Messages
    173
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2009
    Messages : 173
    Par défaut
    Citation Envoyé par sperot51 Voir le message
    si tes paramètres sont fixes, les fichier de settings dans les paramètres du projet fonctionne sans écrire ce que tu as écris
    les paramètres sont accessibles via my.Settings.monparam
    J'ai pas vraiment compris et toute façon je pense pas qu'ils sont fixes.
    et c'est quoi "my" dans ton code ?

    Moi je cherche un peu à faire un "user.config" qui peut être un fichier sérialisé (par exemple) et que je pourrais placer dans le dossier utilisateur.

    Sur ce coup la , je regrette un peu de ne pas être en Java, c'est tellement simple et ici ça a tellement l'air d'être une prise de tête ...

  13. #13
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 197
    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 197
    Par défaut
    dans la fenetre des propriétés du projet y a un onglet paramètres
    dedans tu rajoutes autant de variable que tu veux, qui seront enregistrés dans un fichier .config

    il faut choisir le nom de la variable, le type (parmis tous les type .net, meme des font par exemple)
    puis le type entre application et utilisateur et enfin la valeur par défaut
    donc il faut mettre utilisateur pour que ca soit writable

    imaginons un paramètre
    FontTitre / font / utilisateur /arial 10 bold

    et après my.Settings.FontTitre est la variable utilisable dans ton appli et sauvegardé par utilisateur dans doc and settings

    et là y a rien de compliqué ...
    tout le code est généré par visual studio, qui te créé des propriétés dans le namespace my et les propriétés s'occupe de lire et d'écrire dans le fichier
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  14. #14
    Membre éprouvé Avatar de Antho42
    Profil pro
    Inscrit en
    Février 2009
    Messages
    173
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2009
    Messages : 173
    Par défaut
    Citation Envoyé par sperot51 Voir le message
    dans la fenetre des propriétés du projet y a un onglet paramètres
    dedans tu rajoutes autant de variable que tu veux, qui seront enregistrés dans un fichier .config

    il faut choisir le nom de la variable, le type (parmis tous les type .net, meme des font par exemple)
    puis le type entre application et utilisateur et enfin la valeur par défaut
    donc il faut mettre utilisateur pour que ca soit writable

    imaginons un paramètre
    FontTitre / font / utilisateur /arial 10 bold

    et après my.Settings.FontTitre est la variable utilisable dans ton appli et sauvegardé par utilisateur dans doc and settings

    et là y a rien de compliqué ...
    tout le code est généré par visual studio, qui te créé des propriétés dans le namespace my et les propriétés s'occupe de lire et d'écrire dans le fichier
    Oui ben je crois que je m'égare ...
    Je vois bien l'onglet paramètre , j'ajoute des entrées, dans mon cas c'est simple c est des string donc par exemple :

    Bidon / string / Utilisateur / C est l entree bidon

    Et après ben je vois pas comment pouvoir boucler sur ces paramètres pour chercher si un existe et si oui récupérer sa valeur ni non plus comment faire une nouvelle entrée dans les paramètres.

    Je vois pas du tout l'utilisation du namespace my dont tu me parles.
    Désolé si je suis un peu chiant mais la franchement je nage :S

    Je suis entrain de voir si je peux pas faire ça en sérialisant un fichier avec XmlSerializer.

  15. #15
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 197
    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 197
    Par défaut
    je fais du vb moi donc ca se trouve dans my.settings, c'est ptete pas pareil en c#


    sinon les paramètres du projet, je ne pense pas qu'on peut en ajouter pendant l'execution mais seulement en mode design

    pour ca que je te demandais

    ton besoin c'est de rajouter des paramètres pendant l'execution c'est ca ?
    on alors il faut tenter avec un dictionary of


    dans le pire des cas le xmlserializer ca s'écrit en moins de 10 lignes et sur une variable dictionnary tu devrais pouvoir faire ce que tu souhaites
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  16. #16
    Membre éprouvé Avatar de Antho42
    Profil pro
    Inscrit en
    Février 2009
    Messages
    173
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2009
    Messages : 173
    Par défaut
    Oui en effet j'ai besoin d'en ajouter pendant l'exécution.

    Mais a mon avis je cherchais quelque chose de trop "sophistiqué" à faire.
    J'ai quasi résolu le problème, j'ai fait une classe qui s'occupe de lire, de parcourir et d'écrire avec des StreamReader/Writer sur un fichier spécifié.

    Ça fonctionne parfaitement sauf que pour le moment j'écris dans un fichier à la racine "C:\" et lui dit d'écrire dans le fichier "param.txt".

    La il faut que je trouve comment récupérer par instruction le dossier utilisateur "doc & settings\user\..." au lieu de la racine (histoire que ça soit plus propre) et que je retrouve comment spécifié de créer le fichier s'il n'existe pas.


  17. #17
    Membre éprouvé Avatar de Antho42
    Profil pro
    Inscrit en
    Février 2009
    Messages
    173
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2009
    Messages : 173
    Par défaut
    Bon ben voila j'ai tout ce qui me faut:

    Un bon
    pour checker le fichier

    Et ensuite
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData)
    pour récupérer le répertoire utilisateur

    Problème (en quelque sorte vu que j'ai opté pour une autre solution)

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

Discussions similaires

  1. [webdav] fichier ouvert en lecture seule
    Par Invité dans le forum Autres Logiciels
    Réponses: 4
    Dernier message: 04/12/2006, 09h15
  2. [VB6] Fichier excel en lecture seul et détection fermeture
    Par belfaigore dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 17/05/2006, 11h48
  3. Réponses: 1
    Dernier message: 26/01/2006, 18h16
  4. Fichier Word en lecture seul
    Par uskiki85 dans le forum Access
    Réponses: 1
    Dernier message: 06/10/2005, 20h30
  5. Ouvrir un fichier word en lecture seule
    Par yoyo30 dans le forum Access
    Réponses: 11
    Dernier message: 09/09/2005, 10h25

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