Registry vs. INI文件,用于存储用户可配置的应用程序设置

Kur*_*cht 47 windows registry settings ini configuration-files

我是一名新的Windows程序员,我不确定应该在哪里存储用户可配置的应用程序设置.我理解需要为用户提供用户友好的方式来更改应用程序设置,例如编辑| 设置表单或类似.但是,在用户点击该表单上的"应用"按钮后,我应该在哪里存储值?

在Windows注册表中存储设置与将其存储在本地INI文件或配置文件或类似文件中的优缺点是什么?

小智 39

配置文件的优点:

  1. 容易做到.不需要知道任何Windows API调用.您只需要知道编程语言的文件I/O接口.
  2. 便携.如果将应用程序移植到另一个操作系统,则无需更改设置格式.
  3. 用户可编辑的.用户可以在执行程序之外编辑配置文件.

注册表的优点:

  1. 安全.除非他/她知道regedit,否则用户不会意外删除配置文件或破坏数据.然后用户只是在寻找麻烦.
  2. 我不是Windows程序员的专家,但我确信使用注册表可以更容易地执行其他Windows特定的事情(用户特定设置,网络管理等组策略或其他任何事情).

如果您只需要一种简单的方法来存储配置信息,我建议使用INI或XML作为格式的配置文件.我建议只有在你想要使用注册表的某些特定内容时才使用注册表.

  • JSON是目前用于简单数据文件的另一种广泛使用的格式. (4认同)
  • 遗漏点:重新安装新窗口不要杀死ini文件.集中式数据库需要是互斥的,我们不会在这里谈论具有多级可回滚事务的Oracle质量.清洁/防病毒工具喜欢弄乱人们的注册表,而不是那么多分散的ini文件.注册表只是文件系统中的一个文件系统,这是一个反模式http://en.wikipedia.org/wiki/Inner-platform_effect ... (2认同)
  • INI 文件是一个更好的系统。成功启动后的应用程序可以简单地保存 INI 的备份以防止损坏。 (2认同)

Lip*_*pis 25

Jeff Atwood有一篇关于Windows注册表的精彩文章,为什么最好使用.INI文件.

如果将每个应用程序设置存储在一个我可以轻松看到它们,操纵它们并备份它们的地方,那么我的生活将变得更容易.比如,说...在INI文件中.

  • 注册表是单点故障.这就是为什么你能找到的每一个注册表编辑提示开头都有一个很大的尖叫免责声明,关于如何用注册表破坏你的计算机.
  • 注册表是不透明的二进制文件.尽管我不喜欢尖括号税,但至少XML配置文件是人类可读的,它们允许你认为合适的评论.
  • 注册表必须与文件系统同步.删除一个没有"卸载"它的应用程序,你就会留下陈旧的注册表.或者,如果某个应用程序的卸载程序写得不好.文件系统不再是记录语句 - 它必须以某种方式与注册表保持同步.这完全违反了DRY原则.
  • 注册表是单一的.假设您希望将应用程序移动到计算机上的其他路径,甚至将其移动到另一台计算机上.祝您从巨大的注册表tarball中提取该特定应用程序的相关设置.给定的应用程序通常有遍布注册表的数十个设置.

  • 我完全同意.注册表只是你可以永远不会完全删除的垃圾和rinky-dink应用程序. (2认同)

On *_*und 5

与注册表相比,使用 INI 文件还有一个我没有提到的优点:如果用户使用某种基于卷/文件的加密,他们可以很容易地对 INI 文件进行加密。如果使用注册表,问题可能会更大。