首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >系统注册表的意义是什么?

系统注册表的意义是什么?
EN

Stack Overflow用户
提问于 2010-07-25 08:29:13
回答 9查看 1.5K关注 0票数 12

很抱歉在这里我真的一无所知,我只是想知道,为什么程序需要注册表?它的用途是什么?为什么软件不能直接将变量写入自己的本地文件?它是不是做了什么我不知道的事情?

EN

回答 9

Stack Overflow用户

回答已采纳

发布于 2010-07-25 09:32:54

我的意思是,Windows注册表是一项几乎和宠物岩石一样实用和有用的发明。

  1. 通过将应用程序配置数据与操作系统配置数据放在同一位置,它使得任何更新应用程序的尝试都会带来搞砸操作系统的危险。这就像做一个遥控器,同时控制你的电视和起搏器。当然,你可能会说把所有的控件都放在一个地方很方便,但这也造成了任何试图改变频道的尝试都会杀死你的危险。
  2. 旧的INI文件很容易被计算机和人类读取和更新。对于真正懒惰的程序员来说,他们不知道如何操作一个简单的文本文件,有一些库函数可以简单而容易地做到这一点。使用程序更新注册表有些困难,对任何人来说都非常难读取,特别是non-programmer.
  3. In在过去每个程序都有一个目录并将其所有数据存储在该目录中时,您可以通过简单地删除目录来删除程序,并且您可以通过简单地复制此目录来自信地备份程序。对于注册表,每个程序都需要一个特殊的卸载程序,并且通常会有过时或垃圾条目无限期地漂浮在注册表中。

有没有人可以板着脸说注册表很容易管理,或者它增加了系统的可靠性?

我认为微软应该做的是创建一个中心文件,记录每个应用程序的安装目录和它知道如何打开的文件的扩展名。这应该是操作系统需要知道的关于应用程序的唯一信息。其他所有内容都应该存储在应用程序自己的目录中。

更新:回复Mick

我不同意参考文章中的大部分观点。比如,“你不能在INI文件中存储二进制数据”和"INI文件只有两层结构“。如果系统INI文件只存储操作系统需要知道的应用程序信息,每个文件只有几个文本字符串,就不需要二进制数据或分层结构。应用程序INI应该只保存配置和首选项信息,因此不再需要二进制数据和层次结构。INI格式的优点是它是一个简单的、可读的文本文件。这使得它易于解析、易于更新和易于管理。我最初的帖子的全部观点是,通过添加注册表,以及各种复杂的功能,微软用难以管理的东西取代了容易管理的东西。

关于安全性和并发性的观点有一定的正确性。但我们肯定可以在现有的框架内解决这些问题。

当然,INI文件并不是一个好的数据库。但那又如何呢?这不是它的目的。这就像是抱怨一双鞋不能帮助你游泳,不能让你飞行或做早餐,因此我们应该把所有的鞋子都换成带无线电控制和内置微波炉的喷气式脚手架。其结果肯定是一个过于复杂、笨拙的怪物。它将不再舒适地走在里面,可能对游泳或做早餐也不是很好。它不是非常适合一件事--步行--而是几乎不能用来做十几件事。顺便说一句,我们已经有了非常好的工具来完成这些事情。哦,有点像注册表。

票数 22
EN

Stack Overflow用户

发布于 2010-07-25 08:37:40

Windows注册表是程序正在写入的本地.ini文件的intended to stem the proliferation

人们一直认为,特定的实现是错误的( far worse ),而不是它想解决的问题。在我的生活中,我不得不在一两个注册表上做过精确手术,我碰巧同意。

票数 10
EN

Stack Overflow用户

发布于 2010-07-25 08:33:56

注册表用途

Windows注册表是一个分层数据库,用于存储Microsoft Windows操作系统上的配置设置和选项。它包含低级操作系统组件以及在平台上运行的应用程序的设置:内核、设备驱动程序、服务、SAM、用户界面和第三方应用程序都使用注册表。注册表还提供了一种访问计数器以分析系统性能的方法。

为什么要在INI文件上注册?

.INI文件将每个程序的用户设置存储在单独的文件中。相比之下,Windows注册表以标准化的形式将所有应用程序设置存储在一个中央存储库中。与INI文件相比,这提供了几个优点。2由于访问注册表不需要解析,因此可以比INI文件更快地读取或写入注册表。此外,强类型数据可以存储在注册表中,而不是存储在INI文件中的文本信息。由于基于用户的注册表设置是从特定于用户的路径加载的,而不是从只读系统位置加载的,因此注册表允许多个用户共享同一台计算机,还允许程序为最低权限用户工作。备份和恢复也得到了简化,因为只要远程注册表服务正在运行且防火墙规则允许,就可以通过网络连接访问注册表以进行远程管理/支持,包括从脚本使用标准API集。

注册表具有提高系统完整性的功能,因为注册表被构造为数据库,并提供类似数据库的功能,如原子更新。如果两个进程尝试同时更新相同的注册表值,则其中一个进程的更改将先于另一个进程的更改,并且将保持数据的总体一致性。在对INI文件进行更改的情况下,这种争用条件可能会导致不一致的数据,这些数据与任何尝试的更新都不匹配。Windows Vista和Windows 7为注册表提供事务性更新,使用传统的提交-中止语义跨多个键和/或值更改扩展原子性保证。(但是请注意,NTFS也为文件系统提供了这样的支持,因此从理论上讲,使用传统配置文件也可以获得相同的保证。)

来自Wikipedia - Windows Registry

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3327491

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档