Windows下注册表和配置文件该如何选择

必须使用注册表的情况

  1. 操作系统需要知道程序可以打开特定后缀的文件
  2. 有自定义 URL Scheme,允许其他应用程序唤醒,如浏览器
  3. COM组件必须在注册表中注册
  4. 需要给右键菜单增加自定义项目
  5. 是系统级服务或驱动

关键:当软件需要告诉Windows他能做什么,或者需要被Windows调用时,就需要使用注册表。

注册表和配置文件如何选择

先说结论:除非必须要使用注册表,否则优先使用配置文件。

  1. 跨平台:注册表极差、而配置文件极佳
  2. 可读性与编辑:注册表极差、配置文件较好
  3. 版本控制:注册表几乎无法实现版本控制,而配置文件作为代码的一部分,控制版本比较容易
  4. 部署:注册表的部署和环境迁移困难,注册表则很简单
  5. 安全性:注册表较好,配置文件则依赖于文件系统
  6. 性能:注册表因为有OS优化,适合快速读取少量数据,性能较高。但对现代系统而言,配置文件也足够快
  7. 安装与卸载:注册表安装需要写入,卸载需要清理。而配置文件只需要删除文件即可
  8. 标准化:注册表使用标准的Windows API,配置文件则需要约定,不过也有事实标准可以遵循

其他

即使是在Windows上,.NET Core和之后的.NET 5/6/7 等现代框架也极大地弱化了注册表的作用,转而强烈推荐使用JSON配置文件和环境变量来管理配置。