什么是存储应用程序设置的相当标准的方式,主要用于 Windows,但也很容易转移到其他平台。
基本上我想要 4 组设置:
- 全局设置,影响所有用户,并且可以在机器之间移动
- 全局系统设置,影响所有用户,但特定于该系统(例如该系统的默认设置,例如图形选项)
- 用户设置,在系统之间移动的用户设置(例如音量)
- 用户系统设置,特定于该系统的用户设置(例如依赖于硬件的图形选项)
每个级别都覆盖前一个级别,允许“全局设置”在很大程度上是应用程序的默认设置,用户设置存储用户选择的选项。前两个基本上是没有用户设置的默认设置(例如,对于新用户)。
我考虑实现一组功能,然后我可以为不同的系统实现(可能通过 ini 文件),但这是最好的方法吗?
(c++)
namespace config
{
void Init(const std::string &AppName);
//updates config for keys/sections that don't exist (ie don't overwrite changes by advanced users by rewriting the entire file)
void Defaults (std::map<std::string,std::map<std::string,std::string> > &Map);
void SystemDefaults (std::map<std::string,std::map<std::string,std::string> > &Map);
void Set (const std::string &Section, const std::string &Key, const std::string &Value);
void SetSystem (const std::string &Section, const std::string &Key, const std::string &Value);
void SetUser (const std::string &Section, const std::string &Key, const std::string &Value);
void SetUserSystem (const std::string &Section, const std::string &Key, const std::string &Value);
std::string GetValue (const std::string &Section, const std::string &Key);
}
我知道 Windows 有一组用于此类设置的目录,但这些是我需要的正确目录吗?
编辑:我宁愿使用文件(ini 或 xml),而不是使用 windows registery。但是,将这些配置文件放在每个操作系统下的最佳位置在哪里?
在 Vista 下,我找到了这些,似乎适合我的群体,但是旧的 windows 版本(我需要支持 win2000、XP 等),mac/linux 是否有自己的类似文件夹?
- 全局设置 - <SYSDRIVE>\Users\Default\Appdata\Roaming
- 全局系统设置 - <SYSDRIVE>\Users\Default\Appdata\Local
- 用户设置 - <SYSDRIVE>\Users\<USER>\AppData\Roaming
- 用户系统设置 - <SYSDRIVE>\Users\<USER>\AppData\Local