为什么Windowsregistry存在?
这是比直接编程更多的OS架构问题,但仍然。 为什么将Windowsregistry创build为完全独立的子系统来存储系统/应用程序设置? 在* nix OS中有/ etc目录,这是完全可以理解的,因为文件系统是存储设置的自然分层方式,而微软决定创build一个完全外部的分层子系统,这似乎是一个愚蠢的投资,为什么没有他们只是使用文件系统层次结构?
- 集中式 – 这对漫游configuration文件很有用。
- 交易 – 这使得更难以粉碎你的configuration。
- 安全性 – 您可以使用比文件(每键/值)更好的粒度来强制执行读/写操作。
本文讨论INI文件与registry: http : //blogs.msdn.com/oldnewthing/archive/2007/11/26/6523907.aspx
所以,当二进制registry被损坏时,你会放弃购买最新版本的Windows进行全新安装。
此外,文件系统的粒度:每个值的一个集群有点多,所以你需要在文件系统结束和设置文件开始的地方做一个权衡。 这当然不会给你一个一致的API。 那么为什么不把所有的设置都放到几个关键文件中,然后给你一个一致的API来访问呢? BAM – registry。
(因为MS通常认为API比格式更重要,所以文件不透明并不奇怪)
[Raymond Chen的声音]请记住,它是专为4MB内存的电脑而devise的[/ Raymond Chen的声音]
- 每个应用程序不必重新创buildconfiguration文件格式
- 您可以在内核模式代码中轻松使用registry
正如Bastien引用的旧新文章中提到的那样:
- 系统可以为您处理并发问题
- 您可以ACLregistry项
我还要提到许多* nix框架已经重新创build了registry…就像GNOME上的gconfd一样。
这个想法是将所有程序的所有设置存储在一个地方,而不是将它们散布在整个磁盘上。
他们这样做,我相信,为每个login用户支持一个单独的设置。 在Unix中,主目录有一个概念,而在Windows中则没有。
对于初学者来说,在用户会话过程中读取和写入registry会更快。
它为整个系统的应用程序configuration控制创build了一个单点条目。 对于embedded式networking数据库(例如Rational使用的Raima)或文本数据库(Bernstein's cdb)来说,这将是一个不错的用例。