Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Where are application settings saved?

I am trying to store some persistent application data so I've added a setting to the project by R-Clicking on it, selecting properties, then Settings tab and manually entering settings name, Type, Scope and Value

When I run the code, I read settings like this:

lastRunTime = My.Settings.LastRunTime

and set it like this:

My.Settings.LastRunTime = lastRunTime

Where can I actually see the new setting? Because for the love of God, I cannot see where it is updating the setting. app.config has the original setting value when I created that setting. So where can I see it?

When I run the code, I see it updates it and the next time I run the app the new value persists, so I know it stores it somewhere. But where?

like image 296
George Avatar asked May 17 '26 02:05

George


2 Answers

.NET has to do something special, it has to give you a guarantee that another program that also happens to have a "LastRuntime" setting doesn't overwrite the value that's stored for your program. To do that, it stores a user.config file in a directory that's hard to find back. It has a weirdo name, like

C:\Users\username\AppData\Local\WindowsFormsApplication1\WindowsFormsApplication1._Url_twchbbo4atpsvjpauzkgkvesu5bh2aul\1.0.0.0\user.config

Note how the project name is part of the path, that's one way to find it back. The unspeakable part of the name is a hash, created from various properties of your project that make your app unique enough to not collide with another .NET program, even if the name matches. Like your product name, company name, exe name, etcetera.

Note how the converse is true as well, changing such a property makes you lose your user.config file. So if "LastRuntime" is some kind of license metering value then using a setting isn't the best idea.

like image 120
Hans Passant Avatar answered May 21 '26 00:05

Hans Passant


That value is stored in the APPDATA folder under your user profile. For Windows 7 look in C:\Users\\AppData\Roaming\

There will be a folder named based on how you configured Visual Studio. Since my copy at work is registered to the company, the default value is my company name. Since my copy of Visual Studio at home is registered to myself, the default value is my name.

AppData is a hidden folder, that won't show up if you navigate via Windows Explorer. But if you type it into the run command it will open with no problems.

like image 32
Stephen Wrighton Avatar answered May 21 '26 00:05

Stephen Wrighton