为什么Windows注册表存在?

jus*_*mer 38 unix windows registry

这是比直接编程更多的OS架构问题,但仍然如此.为什么将Windows注册表创建为用于存储系统/应用程序设置的完全独立的子系统?在*nix OS中,有/ etc目录是完全可以理解的,因为文件系统是存储设置的自然分层方式,而微软决定创建一个完全外部的分层子系统,这似乎是一个愚蠢的投资,为什么没有他们只是使用文件系统层次结构?

Kev*_*ose 50

  1. 集中 - 这对漫游配置文件很有用.
  2. 交易 - 这使得粉碎配置变得更加困难.
  3. 安全性 - 您可以使用比文件(每个键/值)更好的粒度来强制执行读/写操作.

  • 很好的总结. (13认同)
  • 什么是关于注册表的交易?你的意思是单个价值更新是原子的吗?或者你的意思是Vista的交易注册表(这显然是一个非常新的发展)?当然,如果每个值都是一个单独的文件,那么可以使用文件的每个键/值ACL(我记得有一些来自IBM的类似Linux注册表的东西实际上是这样做的......). (2认同)
  • @justadreamer:/etc 是集中式的,但许多应用程序预注册的状态是将配置文件放入“.”;登记处是另一种选择。文件系统最多提供文件级别的事务(并非所有使用的文件系统都这样做);这意味着要以事务方式更新配置文件,您必须将整个内容存储在内存中 - 您不能将单个密钥更新为事务。与 HKLM & HKCU 相比,将东西存储在 /etc & ~ 中并不简单;他们是一个等价的部门。 (2认同)

JAL*_*JAL 10

因此,当二进制注册表损坏时,您将放弃并购买最新版本的Windows以进行全新安装.


asv*_*kau 7

  • 每个应用程序都不必重新发送配置文件格式
  • 您可以在内核模式代码中轻松使用注册表

正如Bastien引用的Old New Thing文章所述:

  • 系统可以为您处理并发问题
  • 您可以使用ACL注册表项

我还要提到许多*nix框架已经彻底改造了注册表......就像GNOME上的gconfd一样.

  • regedit只是生成在系统目录中的编码配置文件的GUI前端.不错的尝试. (3认同)
  • @Vitali - 呃.gconf是一组用于配置数据的结构化键值对.就像注册表一样. (3认同)

pet*_*hen 7

此外,文件系统粒度:每个值的一个集群有点多,因此您需要在文件系统结束和设置文件启动时进行权衡.那当然不会给你一致的API.那么为什么不将所有设置都放入几个关键文件中,并为您提供一致的API来访问它?BAM - 注册表.

(并且由于MS通常认为API比格式更重要,因此文件不透明也就不足为奇了)

[Raymond Chen的声音]请记住,它是专为4MB内存充足的电脑而设计的.[/ Raymond Chen的声音]