Windows中用户配置文件的存放位置
我正在写一个Python库,这个库有一个每个用户都可以编辑的配置文件。同时,这个库还会生成日志文件。在类Unix系统上,通常的做法是把这些文件放在$HOME/.library_name这个地方。
不过,我对Windows用户该怎么处理有些不确定。我之前用Windows很多年,后来才换到Linux,发现应用程序通常要么依赖图形界面来配置(我不太想开发这个),要么把配置数据放在注册表里(这开发起来很麻烦,而且和类Unix的配置文件不兼容)。
现在我在Windows上也把文件放在$HOME/.library_name,但这样做在Windows上感觉很不自然。
我考虑过把它放在%APPDATA%这个地方,因为应用程序的数据通常会放在这里,但这也有自己的问题。我最担心的是,普通用户可能根本不知道这个目录在哪里(和%HOME/~不一样),而且用户可编辑的配置文件通常不会放在这里。
那么,在Windows上,用户可以编辑的配置文件的标准位置应该是哪里呢?
3 个回答
在Windows系统上,用户通常不需要通过可编辑的配置文件来设置应用程序,所以没有一个统一的标准。
在Windows上,使用图形界面(GUI)可以编辑的配置标准是注册表。
如果你在使用QT(或者PyQT?),那么你可以用QSettings
,它提供了一个抽象层。在Linux上,它使用配置文件,而在Windows上则是写入注册表。
Python的appdirs这个包很不错,它能帮我们找到不同平台上应用程序数据的标准存放位置。例如,在Windows系统上,它会使用英文版XP的存放位置:
C:\Documents and Settings\<User>\Application Data\Local Settings\<AppAuthor>\<AppName>
而在Linux系统上,它则遵循XDG标准:
~/.config/<appname>
%APPDATA% 是存放这些文件的合适地方(通常是在你库的一个子文件夹里)。不过,很多从 *nix 系统移植到 Windows 的应用程序并不遵循这个规则,导致我的主目录里出现了 .gem、.ssh、.VirtualBox 等文件夹,这些文件夹默认是可见的,而在 *nix 系统中它们是隐藏的。
为了方便那些对 Windows 目录结构不太了解的用户,可以设计一个菜单选项(或者类似的功能),让他们可以直接在编辑器中打开配置文件。
如果可能的话,最好提供一个图形界面的前端,即使它很简单。因为 Windows 用户会期待在工具 | 选项菜单中看到一个对话框,允许他们设置选项,如果没有,他们可能会感到困惑。