存储设置/缓存的跨平台方式

时间:2011-06-15 18:01:39

标签: c cross-platform configuration-files

我目前正在用C编写一个程序,需要存储配置文件,磁盘上的各种缓存文件,以及一些永不改变的静态数据文件,并且可以安全地为所有用户共享。

我希望以可移植的方式将这些文件存储在操作系统的适当位置......

例如,在GNU / Linux上:

$XDG_CONFIG_HOME/<program_rame>/ -- for configuration files
$XDG_CACHE_HOME/<program_name>/ -- for cache files
$XDG_DATA_DIRS/<program_name>/ -- for static files

并且,如果未设置这些,我可以使用建议的默认值(“〜/ .config”,“〜/ .cache”和“/ usr / share”)。 GNU / Linux很容易。

但是,在Windows上,我不知道如何找到相应的这些。我认为它会在AppData的某个地方,但在哪里?而且,最重要的是,我如何以编程方式获得此信息?那么其他操作系统呢(特别是Mac OS,因为大多数其他UNIX也可以使用“GNU / Linux”方法)?

我对所有解决方案持开放态度,无论是否需要图书馆。在此先感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

Windows之前称为known folder IDs,之前(在Vista之前)称为special item IDs, or CSIDL。例如,FOLDERID_LocalAppData引用的文件夹(即%USERPROFILE%\AppData\Local)可能就是您要查找的内容。我不在Windows上,因此我不知道这些值提供哪些C-API。但是,这些文件夹可能也可用作环境变量(例如%LOCALAPPDATA%)。

相关问题