In my personal opinion, application setting is somewhat morally obsolete. Instead, I use much more powerful and easy-to-use weapon: Data Contract:
http://msdn.microsoft.com/en-us/library/ms733127.aspx[
^].
It allows to store any object graph in stream and restore it back. The approach is absolutely non-intrusive: you don't modify data types, don't follow any rules (no access modifiers, implementing any interfaces, nothing), just add some attributes to types and members to became part of contract. Isn't it the best mechanism for any kinds of settings?
And, to put the file in write place, please see:
http://msdn.microsoft.com/en-us/library/system.environment.getfolderpath.aspx[
^],
http://msdn.microsoft.com/en-us/library/system.environment.specialfolder.aspx[
^].
This way, you can use either application data per user account, or the one for "all users", or anything like that.
—SA