Où sont stockés les Properties.Settings.Default?

Je pensais que je le savais, mais aujourd’hui, je me trompe – encore une fois.

Exécution de VS2008, .NET 3.5 et C #. J’ai ajouté les parameters utilisateur à l’onglet Paramètres de propriétés avec les valeurs par défaut, puis les lire à l’aide de ce code:

myTextBox.Text = Properties.Settings.Default.MySsortingngProperty; 

Ensuite, après avoir modifié la valeur dans la boîte de dialog des options, l’utilisateur l’enregistre comme suit:

 Properties.Settings.Default.MySsortingngProperty = myTextBox.Text; Properties.Settings.Default.Save(); 

Ma question est: où est cette nouvelle valeur économisée? le fichier MyApp.exe.config dans le répertoire exécutable n’est pas mis à jour, il contient toujours les valeurs par défaut. De plus, pour autant que je sache, aucun des autres fichiers de ce répertoire n’est mis à jour non plus! Cependant, quand le programme lit la valeur, il récupère la valeur modifiée, donc je sais que c’est enregistré quelque part …

Ce n’est pas seulement académique, je devais être capable de modifier manuellement la valeur ce matin et je me suis retrouvé déconcerté lorsque je ne pouvais rien trouver qui changeait.

Afin de fonctionner avec les nouvelles versions de la politique de Windows qui autorise uniquement l’access en lecture par défaut au dossier Program Files (sauf si vous demandez une élévation avec UAC, mais c’est un autre sujet …), votre application aura un dossier de parameters sous %userprofile%\appdata\local ou %userprofile%\Local Settings\Application Data selon la version de Windows que vous exécutez, pour les parameters spécifiques à l’utilisateur. Si vous stockez des parameters pour tous les utilisateurs, ils se trouveront dans le dossier correspondant sous C:\users ou C:\Documents and Settings pour tous les profils utilisateur (ex: C:\users\public\appdata\local ).

Vous pouvez obtenir le chemin par programmation:

 using System.Configuration; // Add a reference to System.Configuration.dll ... var path = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.PerUserRoamingAndLocal).FilePath; 

il est enregistré dans vos documents et parameters \% user% \ Local Settings \ Application Data …… etc rechercher un fichier appelé user.config

l’emplacement peut changer cependant.

Merci de m’avoir orienté dans la bonne direction. J’ai trouvé user.config situé à cette monstruosité: c: \ users \ USER \ AppData \ local \ COMPANY \ APPLICATION.exe_Url_LOOKSLIKESOMEKINDOFHASH \ VERSION \ user.config.

J’ai dû mettre à jour la version sur mon application et tous les parameters semblaient avoir disparu. application créé un nouveau dossier avec la nouvelle version et utilisé les parameters par défaut. Il a fallu une éternité pour trouver où le fichier était stocké, mais alors c’était un simple copier-coller pour obtenir les parameters de la nouvelle version.

Les parameters spécifiques à l’utilisateur sont enregistrés dans le dossier Application Data de l’utilisateur pour cette application. Recherchez un fichier user.config .

Je ne sais pas ce que vous attendiez, car les utilisateurs n’ont souvent même pas access en écriture au répertoire exécutable.

Il y a un dossier appelé “Propriétés” dans le dossier racine de votre projet, et il y a un fichier * .settings dans ce dossier. C’est là que ça se stocke.