By default settings are stored at: C:\Documents and Settings\\Local Settings\Application Data\<Project Name>
How can I change this path to application directory. I also don't want to have different files for different users. How make the settings global?
I tried to change the scope of the settings to "application" but then I cannot change them at runtime.
Using the default built-in behavior you can't!
Q: Why is the path so obscure? Is there any way to change/customize
it?
A: The path construction algorithm has to meet certain rigorous
requirements in terms of security,
isolation and robustness. While we
tried to make the path as easily
discoverable as possible by making use
of friendly, application supplied
strings, it is not possible to keep
the path totally simple without
running into issues like collisions
with other apps, spoofing etc.
The LocalFileSettingsProvider does not
provide a way to change the files in
which settings are stored. Note that
the provider itself doesn't determine
the config file locations in the first
place - it is the configuration
system. If you need to store the
settings in a different location for
some reason, the recommended way is to
write your own SettingsProvider. This
is fairly simple to implement and you
can find samples in the .NET 2.0 SDK
that show how to do this. Keep in mind
however that you may run into the same
isolation issues mentioned above .
I agree with Robert Harvey's answer do it yourself, or write a custom settings provider.
You can always read and write your own XML configuration files.
There are difficulties with programmatically changing settings for all users (since they come from the exe.config file, which is usually in Program Files and thus protected from write access in modern OSes). You can try making the settings application-wide but then use the ConfigurationManager
to mess with the config file, similarly to the solution to this question.