必须使用注册表的情况
- 操作系统需要知道程序可以打开特定后缀的文件
- 有自定义 URL Scheme,允许其他应用程序唤醒,如浏览器
- COM组件必须在注册表中注册
- 需要给右键菜单增加自定义项目
- 是系统级服务或驱动
关键:当软件需要告诉Windows他能做什么,或者需要被Windows调用时,就需要使用注册表。
注册表和配置文件如何选择
先说结论:除非必须要使用注册表,否则优先使用配置文件。
- 跨平台:注册表极差、而配置文件极佳
- 可读性与编辑:注册表极差、配置文件较好
- 版本控制:注册表几乎无法实现版本控制,而配置文件作为代码的一部分,控制版本比较容易
- 部署:注册表的部署和环境迁移困难,注册表则很简单
- 安全性:注册表较好,配置文件则依赖于文件系统
- 性能:注册表因为有OS优化,适合快速读取少量数据,性能较高。但对现代系统而言,配置文件也足够快
- 安装与卸载:注册表安装需要写入,卸载需要清理。而配置文件只需要删除文件即可
- 标准化:注册表使用标准的Windows API,配置文件则需要约定,不过也有事实标准可以遵循
其他
即使是在Windows上,.NET Core和之后的.NET 5/6/7 等现代框架也极大地弱化了注册表的作用,转而强烈推荐使用JSON配置文件和环境变量来管理配置。