问题描述
|
我目前正在用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 \”方法)怎么办?
我愿意接受所有解决方案,无论它是否需要一个库。在此先感谢您的帮助 !
解决方法
Windows具有所谓的已知文件夹ID,以前(在Vista之前)称为特殊项目ID或CSIDL。例如,在
FOLDERID_LocalAppData
(即%USERPROFILE%\\AppData\\Local
)引用的文件夹中可能就是您要查找的内容。我不在Windows上,因此我不知道这些值提供哪个C-API。但是,这些文件夹也有可能用作环境变量(例如%LOCALAPPDATA%
)。