I’m developing a small C# Winforms game and one of the things I’m wanting to do is save application specific data. However, I’m struggling a bit to understand the correct place this should be stored.
As far as I can see there are several types of data an application might store and accordingly different places for it to be held:
1. Application properties
– Settings such as where the application stores it’s data, who the last logged in user was, the default window size, position etc. Is this information suppose to go into app.settings, or perhaps into the registry?
2. Global application data
– This might include sprites and other game assets that are used by every user that runs the application on this machine. Where would this common data be stored? It’s worth noting that in my particular case this data will not be provided with a default install and users will be allowed to add their own game assets which should be then available to any other user on the same computer.
3. User specific application data
– This would include a users saved game files, their specific application preferences and their profile information. Where should I be storing this?
Ideally I wish my application to be compatible with Windows XP, Vista, 7 and of course the upcoming Windows 8 – I don’t know if this changes the methods but hopefully it will assist with providing advice.
This is my first foray into this kind of development and I would appreciate some ‘best practice’ advice.
Question 2:
I suggest using a subfolder in
Environment.SpecialFolder.CommonAppData(maps toC:\ProgramDataon Windows7 by default). This is a hidden folder.Question 3:
Put those files into
Environment.SpecialFolder.AppData(maps toC:\Users\[USERNAME]\AppData\Roamingby default, hidden folder), if you expect that the user does not intend to backup / modify those. Some games also put their save games intoEnvironment.SpecialFolder.MyDocuments, probably because it is easier for users to find them there.Example code:
For a complete list of special folders on Windows follow the link
SIDENOTES
CommonAppDatadirectory and the bug gets more severe in Windows 8 x64 CP. I’ve blogged about this: problems after moving CommonAppData directory on Windows 7 x64 and Windows 8 x64