how to change .NET user settings location

mack369 picture mack369 · Mar 25, 2010 · Viewed 18k times · Source

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.

Answer

ParmesanCodice picture ParmesanCodice · Mar 25, 2010

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.