【发布时间】:2010-09-17 12:47:10
【问题描述】:
什么是存储应用程序设置的相当标准的方法,主要用于 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 注册表。但是,将这些配置文件放在每个操作系统下的最佳位置在哪里?
在 Vista 下我找到了这些,它们似乎适合我的群体,但是旧的 windows 版本(我需要支持 win2000、XP 等)呢,mac/linux 是否有自己的类似文件夹?
- 全局设置 -
\Users\Default\Appdata\Roaming - 全局系统设置 -
\Users\Default\Appdata\Local - 用户设置 -
\Users\ \AppData\Roaming - 用户系统设置 -
\Users\ \AppData\Local
【问题讨论】: