Where is the data for Properties.Settings.Default saved?
C#WpfSettingsC# Problem Overview
In my WPF application, I click on Settings.settings in the Solution Explorer and enter a StringCollection variable with a User scope:
in my app.config I see that they are saved there:
<userSettings>
<TestSettings.Properties.Settings>
<setting name="Paths" serializeAs="Xml">
<value>
<ArrayOfString xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<string>one</string>
<string>two</string>
<string>three</string>
<string>four</string>
<string>five</string>
<string>six</string>
<string>seven</string>
</ArrayOfString>
</value>
</setting>
</TestSettings.Properties.Settings>
</userSettings>
then I run my application and with this code:
StringCollection paths = Properties.Settings.Default.Paths;
Properties.Settings.Default.Paths.Add("added in code");
Properties.Settings.Default.Save();
foreach (var path in paths)
{
System.Console.WriteLine(path);
}
which gives me this output:
one
two
three
four
five
six
seven
added in code
I run the application again and it gives me this output:
one
two
three
four
five
six
seven
added in code
added in code
But I look at my app.config again and it still has the original values:
<userSettings>
<TestSettings.Properties.Settings>
<setting name="Paths" serializeAs="Xml">
<value>
<ArrayOfString xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<string>one</string>
<string>two</string>
<string>three</string>
<string>four</string>
<string>five</string>
<string>six</string>
<string>seven</string>
</ArrayOfString>
</value>
</setting>
</TestSettings.Properties.Settings>
</userSettings>
Where are the values that are added by the application being saved?
C# Solutions
Solution 1 - C#
Since you selected user scope, they are saved in each user profile directory, more specifically, inside the AppData
folder of the user profile in a file named user.config
.
The full path is dependent of the application.
In Windows 7 without roaming profile and with an Windows Forms Application named Example.Settings.CustomClass
I'm getting the following folder:
C:\Users\[user]\AppData\Local\Microsoft\Example.Settings.CustomCl_Url_3qoqzcgn1lbyw2zx3oz1o3rsw2anyjsn\1.0.0.0
Also note that they are saved taking in consideration the version of your application and that the values stored in App.config
are the default values used for a new user.
Solution 2 - C#
I was looking under Win 10 for the Settings. If anyone else need to know, they are not stored in Subfolder of Microsoft (see previous answer). Just look here:
C:\Users\[user]\AppData\Local\Example\Example...\1.0.0.0\
Solution 3 - C#
I stumbled across an easy way to find the path(s).
- Open the Application Properties.
- Under the "Application" tab, select "Assembly Information...".
- Change the value of "Company". Select OK to save.
- Select the "Settings" application properties tab.
- Select "Synchronize" (first button in the options at the top of the tab).
You should then receive a Visual Studio information dialogue saying "No user.config files were found in any of the following locations:" followed by a list of locations where the settings are saved.