web-dev-qa-db-fra.com

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

Je pensais le savoir, mais aujourd'hui, on me prouve que j'ai tort - encore une fois.

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

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

Ensuite, après que l'utilisateur ait modifié la valeur dans la boîte de dialogue des options, je l'enregistre comme ceci:

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

Ma question est la suivante: où cette nouvelle valeur est-elle enregistrée? le fichier MyApp.exe.config dans le répertoire de l'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! Cependant, lorsque le programme relit la valeur, il récupère la valeur modifiée, je sais donc qu'elle est enregistrée quelque part ...

Ce n'est pas seulement académique, je devais être capable de modifier manuellement la valeur ce matin et me suis laissé perplexe quand je ne pouvais pas trouver quoi que ce soit qui change.

132
DaveN59

Pour pouvoir utiliser les nouvelles versions de la stratégie de Windows n'autorisant que l'accès en lecture par défaut au dossier Program Files (à moins que vous ne demandiez une élévation avec le contrôle de compte d'utilisateur, mais c'est un autre sujet ...), votre application aura un dossier de paramètres sous %userprofile%\appdata\local ou %userprofile%\Local Settings\Application Data en fonction de la version de Windows que vous utilisez, pour les paramètres spécifiques à l'utilisateur. Si vous stockez les paramètres de tous les utilisateurs, ils se trouveront dans le dossier correspondant sous C:\users ou C:\Documents and Settings pour tous les profils d’utilisateur (ex: C:\users\public\appdata\local).

133
jasonh

Vous pouvez obtenir le chemin par programme:

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

merci de m'avoir orienté dans la bonne direction. J'ai trouvé user.config situé à cette monstruosité: c:\utilisateurs\USER\AppData\Local\SOCIETE\APPLICATION.exe_Url_LOOKSLIKESOMEKINDOFHASH\VERSION\user.config.

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

6
Jeremy Ehret

il est enregistré dans votre dossier Documents and Settings \% user%\Local Settings\Application Data ...... etc recherchez un fichier nommé ser.config

l'emplacement peut changer cependant.

5
Stan R.

L'un de mes services Windows est connecté en tant que système local dans Windows Server 2016 et je peux trouver le fichier user.config sous C:\Windows\SysWOW64\config\systemprofile\AppData\Local {votre nom d'application}.

Je pense que le moyen le plus simple est de rechercher le nom de votre application sur le lecteur C, puis de vérifier où se trouve user.config

0
EvilDuck

Les paramètres spécifiques à l'utilisateur sont enregistrés dans le dossier Application Data de l'utilisateur pour cette application. Cherchez un user.config fichier.

Je ne sais pas ce à quoi vous vous attendiez, car les utilisateurs n'ont souvent même pas accès en écriture au répertoire des exécutables.

0
Joel Coehoorn