对于一般的程序,按照下面的方法存储可变数据就行了:
- Unicode程序(类似Chrome):
- 对于新系统,放到%[LOCAL]APPDATA%\OrgName\AppName
- 对于老系统,放到%APPDATA%\OrgName\AppName
- 非Unicode程序(类似Python 2.7):
- 如果要求整个树Authenticated Users允许修改(最简单实用):
- 放到%SYSTEMDRIVE%\AppName
- 最新的系统,系统根目录只能新建子文件夹,子文件夹才可以允许修改
- 如果要求整个树CREATOR OWNER完全控制,所有子文件夹Users可创建项目和修改属性(不推荐):
- 对于新系统,放到%PROGRAMDATA%\OrgName\AppName\user#hash#
- 对于老系统,放到%ALLUSERSPROFILE%\Application Data\OrgName\AppName\user#hash#
简单一句话就是:Unicode程序最好放到AppData子文件夹,非Unicode程序最好放到系统根目录子文件夹。
如果需要让用户能够备份自己的数据,可以把数据放到用户资料文件夹,SHGetSpecialFolderPath等API可以获取Windows中特殊文件夹的位置,用户资料文件夹如下:
- 老系统:CSIDL_PERSONAL、CSIDL_MYPICTURES、CSIDL_MYMUSIC、CSIDL_MYVIDEO、CSIDL_DESKTOPDIRECTORY
- 新系统:
- 传统:FOLDERID_Documents、FOLDERID_Pictures、FOLDERID_Music、FOLDERID_Videos、FOLDERID_Desktop
- 新增:FOLDERID_SavedGames、FOLDERID_Contacts、FOLDERID_Links、FOLDERID_Favorites、FOLDERID_SavedSearches、FOLDERID_Downloads
200字以内,仅用于支线交流,主线讨论请采用回复功能。