Where is the best place to store application preferences?
In particular, I'd like to save preferences for a media player such as volume levels and the like. Two candidates spring to mind... file and registry. Which would be more appropriate?
As a follow up to this, I'm also wondering if there are any APIs that aid in creating application specific settings.
Unless someone advises me that this is wrong, I'd like to save stuff either in HKCU... or HKLM/Software/MyCompanyName/MyAppName/Key
for the registry, or in %APPDATA\MyCompanyName\MyAppName\someTypeOfSettingsFile
.
As these seem to be commonly used for such settings, I'd assume that .Net makes it easy to store settings in these locations. Is there a simple high level API that can .Net offer me to read and write settings to these common locations?
Open settings.settings
in your Visual Studio solution; add an application setting (i.e. change scope from 'user' to 'application').
The IDE creates a backing class that you can use in code.
Application Settings
Application Settings Overview
Using Application Settings and User Settings
Application Settings Architecture
The registry should be avoided.
The location of the app.exe.config and
user.config files will differ based on
how the application is installed. For
a Windows Forms-based application
copied onto the local computer,
app.exe.config will reside in the same
directory as the base directory of the
application's main executable file,
and user.config will reside in the
location specified by the
Application.LocalUserAppDataPath
property. For an application installed
by means of ClickOnce, both of these
files will reside in the ClickOnce
Data Directory underneath
%InstallRoot%\Documents and
Settings\username\Local Settings.
See Application Settings for Windows Forms. Even though it is about Windows Forms, this can be used for other similar applications.
Don't use the Registry without very good reason.