分类：电脑/网络-操作系统/系统故障
问题：什么是注册表？ 
回答：什么是注册表？ 注册表因为它复杂的结构和没有任何联系的CLSID键使得它可能看上去很神秘。不幸的是，微软并没有完全公开讲述关于注册表正确设置的支持信息，这样使得注册表看上去更不可琢磨。处理和编辑注册表如同“黑色”一样，它在系统中的设置让用户感觉象在黑暗中摸索一样找不到感觉。这样，因为用户对这方面的缺乏了解使得注册表更多的出现故障。 Windows注册表是帮助Windows控制硬件、软件、用户环境和Windows界面的一套数据文件，注册表包含在Windows目录下两个文件system.dat和user.dat里，还有它们的备份system.da0和user.da0。通过Windows目录下的regedit.exe程序可以存取注册表数据库。在以前，在windows的更早版本（在win95以前），这些功能是靠 i， i和其他和应用程序有关联的.ini文件来实现的. 在windows操作系统家族中， i和 i这两个文件包含了操作系统所有的控制功能和应用程序的信息， i管理计算机硬件而 i管理桌面和应用程序。所有驱动、字体、设置和参数会保存在.ini文件中，任何新程序都会被记录在.ini文件中。这些记录会在程序代码中被引用。因为受 i和 i文件大小的限制，程序员添加辅助的.INI文件以用来控制更多的应用程序。举例来说，微软的Excel有一个 i文件，它包含着选项、设置、缺省参数和其他关系到Excel运行正常的信息。在 i和 i中只需要指出 i的路径和文件名即可。 最开始， i和 i控制着所有windows和应用程序的特征和存取方法，它在少数的用户和少数应用程序的环境中工作的很好。随着应用程序的数量和复杂性越来越大，则需要在.ini文件中添加更多的参数项。这样下来，在一个变化的环境中，在应用程序安装到系统中后，每个人都会更改.ini文件。然而，没有一个人在删除应用程序后删除.ini文件中的相关设置，所以 i和 i这个两个文件会变的越来越大。每增加的内容会导致系统性能越来越慢。而且每次应用程序的升级都出现这样的难题：升级会增加更多的参数项但是从来不去掉旧的设置。而且还有一个明显的问题，一个.ini文件的最大尺寸是64KB。为了解决这个问题，软件商自己开始支持自己的.ini文件，然后指向特定的ini文件如 i和 i文件。这样下来多个.ini文件影响了系统正常的存取级别设置。如果一个应用程序的.ini文件和WIN.INI文件设置起冲突，究竟是谁的优先级更高呢？ 注册表最初被设计为一个应用程序的数据文件相关参考文件，最后扩展成对于32位操作系统和应用程序包括了所有功能下的东东.注册表是一套控制操作系统外表和如何响应外来事件工作的文件。这些“事件”的范围从直接存取一个硬件设备到接口如何响应特定用户到应用程序如何运行等等。注册表因为它的目的和性质变的很复杂，它被设计为专门为32位应用程序工作，文件的大小被限制在大约40MB。 注册表都做些什么？ 注册表是为Windows NT和Windows95中所有32位硬件/驱动和32位应用程序设计的数据文件。16位驱动在Winnt下无法工作，所以所有设备都通过注册表来控制，一般这些是通过BIOS来控制的。在Win95下，16位驱动会继续以实模式方式设备工作，它们使用 i来控制。16位应用程序会工作在NT或者Win95 下，它们的程序仍然会参考 i和 i文件获得信息和控制。 在没有注册表的情况下，操作系统不会获得必须的信息来运行和控制附属的设备和应用程序及正确响应用户的输入。 在系统中注册表是一个记录32位驱动的设置和位置的数据库。当操作系统需要存取硬件设备，它使用驱动程序，甚至设备是一个BIOS支持的设备。无BIOS支持设备安装时必须需要驱动，这个驱动是独立于操作系统的，但是操作系统需要知道从哪里找到它们，文件名、版本号、其他设置和信息，没有注册表对设备的记录，它们就不能被使用。 当一个用户准备运行一个应用程序，注册表提供应用程序信息给操作系统，这样应用程序可以被找到，正确数据文件的位置被规定，其他设置也都可以被使用。 注册表保存关于缺省数据和辅助文件的位置信息、菜单、按钮条、窗口状态和其他可选项。它同样也保存了安装信息（比如说日期），安装软件的用户，软件版本号和日期，序列号等。根据安装软件的不同，它包括的信息也不同。 然而，一般来说，注册表控制所有32位应用程序和驱动，控制的方法是基于用户和计算机的，而不依赖于应用程序或驱动，每个注册表的参数项控制了一个用户的功能或者计算机功能。用户功能可能包括了桌面外观和用户目录。所以，计算机功能和安装的硬件和软件有关，对所以用户来说项都是公用的。 有些程序功能对用户有影响，有些时作用于计算机而不是为个人设置的，同样的，驱动可能是用户指定的，但在很多时候，它们在计算机中是通用的。 注册表控制用户模式的例子有： 控制面板功能； 桌面外观和图标； 网络参数； 浏览器功能性和特征； 那些功能中的某些是和用户无关的，有些是针对用户的。 计算机相关控制项基于计算机名，和登陆用户无关。控制类型的例子是安装一个应用程序，不管是哪个用户，程序的可用性和存取是不变的，然而，运行程序图标依赖于网络上登陆的用户。网络协议可用性和优先权基于计算机，但是当前连接和用户信息相关。 这里是在注册表中基与计算机控制条目的一些例子： 存取控制； 登陆确认； 文件和打印机共享； 网卡设置和协议； 系统性能和虚拟内存设置； 没有了注册表，Win95和Winnt 就不太可能存在。它们实在太复杂了，以致于用过去的.ini文件无法控制，它们的扩展能力需要几乎无限制的安装和使用应用程序，注册表实现了它。然而，注册表比.ini文件更复杂，理解它如何工作，它做什么和如何用它来做是有效管理系统的关键。 在系统中注册表控制所有32位应用程序和它们的功能及多个应用程序的交互，比如复制和粘贴，它也控制所有的硬件和驱动程序。虽然多数可以通过控制面板来安装和设置，理解注册表仍是做Winnt和Win95系统管理基本常识。 二、注册表的结构 注册表的结构 注册表是Windows程序员建造的一个复杂的信息数据库，它是多层次式的。在不同系统上注册表的基本结构相同。其中的复杂数据会在不同方式上结合，从而产生出一个绝对唯一的注册表。 计算机配置和缺省用户设置的注册表数据在Winnt中被保存在下面这五个文件中： DEFAULT，SAM，SECURITY，SOFTWARE，SYSTEM，NTUSER.DAT。 Win95中所有系统注册信息保存在windows目录下的SYSTEM.DAT文件里。所有硬件设置和软件信息也保存在这个文件。它要比NT注册表文件简单的多，因为这里并不需要更多的控制。Win95被设计为一个网络的客户或者单独工作的系统，所以用户控制或者安全级别和NT不一样。这使得Win95注册表工作比NT更容易，所以这个文件也比较小。 Win95用户的注册数据一般被保存在windows目录下的user.dat里。如果你在控制面板|密码|用户配置文件中创建并使用多于一个用户的配置文件，每个用户就会有在\WINDOWS\Profiles\username\USER.DAT下它自己的user.dat文件。在启动时，系统将记录你的登陆，从你目录中的配置文件（USER.DAT信息）将被装入，以用来保持你自己的桌面和图标。