青岛四方泰合:怎样认识注册表?

来源:百度文库 编辑:中科新闻网 时间:2024/05/06 17:15:50
注册表太复杂了,全是英文字母,看都看不懂,谁能够教我认识注册表呢?

什么是注册表?
注册表因为它复杂的结构和没有任何联系的CLSID键使得它可能看上去很神秘。不幸的是,微软并没有完全公开讲述关于注册表正确设置的支持信息,这样使得注册表看上去更不可琢磨。处理和编辑注册表如同“黑色艺术”一样,它在系统中的设置让用户感觉象在黑暗中摸索一样找不到感觉。这样,因为用户对这方面的缺乏了解使得注册表更多的出现故障。
Windows注册表是帮助Windows控制硬件、软件、用户环境和Windows界面的一套数据文件,注册表包含在Windows目录下两个文件system.dat和user.dat里,还有它们的备份system.da0和user.da0。通过Windows目录下的regedit.exe程序可以存取注册表数据库。在以前,在windows的更早版本(在win95以前),这些功能是靠win.ini,system.ini和其他和应用程序有关联的.ini文件来实现的.
在windows操作系统家族中,system.ini和win.ini这两个文件包含了操作系统所有的控制功能和应用程序的信息,system.ini管理计算机硬件而win.ini管理桌面和应用程序。所有驱动、字体、设置和参数会保存在.ini文件中,任何新程序都会被记录在.ini文件中。这些记录会在程序代码中被引用。因为受win.ini和system.ini文件大小的限制,程序员添加辅助的.INI文件以用来控制更多的应用程序。举例来说,微软的Excel有一个excel.ini文件,它包含着选项、设置、缺省参数和其他关系到Excel运行正常的信息。在system.ini和win.ini中只需要指出excel.ini的路径和文件名即可。
最开始,system.ini和win.ini控制着所有windows和应用程序的特征和存取方法,它在少数的用户和少数应用程序的环境中工作的很好。随着应用程序的数量和复杂性越来越大,则需要在.ini文件中添加更多的参数项。这样下来,在一个变化的环境中,在应用程序安装到系统中后,每个人都会更改.ini文件。然而,没有一个人在删除应用程序后删除.ini文件中的相关设置,所以system.ini和win.ini这个两个文件会变的越来越大。每增加的内容会导致系统性能越来越慢。而且每次应用程序的升级都出现这样的难题:升级会增加更多的参数项但是从来不去掉旧的设置。而且还有一个明显的问题,一个.ini文件的最大尺寸是64KB。为了解决这个问题,软件商自己开始支持自己的.ini文件,然后指向特定的ini文件如win.ini和system.ini文件。这样下来多个.ini文件影响了系统正常的存取级别设置。如果一个应用程序的.ini文件和WIN.INI文件设置起冲突,究竟是谁的优先级更高呢?
注册表最初被设计为一个应用程序的数据文件相关参考文件,最后扩展成对于32位操作系统和应用程序包括了所有功能下的东东.注册表是一套控制操作系统外表和如何响应外来事件工作的文件。这些“事件”的范围从直接存取一个硬件设备到接口如何响应特定用户到应用程序如何运行等等。注册表因为它的目的和性质变的很复杂,它被设计为专门为32位应用程序工作,文件的大小被限制在大约40MB。

注册表都做些什么?
注册表是为Windows NT和Windows95中所有32位硬件/驱动和32位应用程序设计的数据文件。16位驱动在Winnt下无法工作,所以所有设备都通过注册表来控制,一般这些是通过BIOS来控制的。在Win95下,16位驱动会继续以实模式方式设备工作,它们使用system.ini来控制。16位应用程序会工作在NT或者Win95 下,它们的程序仍然会参考win.ini和system.ini文件获得信息和控制。
在没有注册表的情况下,操作系统不会获得必须的信息来运行和控制附属的设备和应用程序及正确响应用户的输入。
在系统中注册表是一个记录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信息)将被装入,以用来保持你自己的桌面和图标。

控制键
在注册表编辑器中注册表项是用控制键来显示或者编辑的。控制键使得找到和编辑信息项组更容易。因此,注册表使用这些条目。下面是六个控制键
HKEY_LOCAL_MACHINE
HKEY_CLASSES_ROOT
HKEY_CURRENT_CONFIG
HKEY_DYN_DATA
HKEY_USERS
HKEY_CURRENT_USER

Winnt和Win95的注册表并不兼容。从Win95向Winnt升级需要你重新安装32位应用程序,重新在桌面上创建图标,并重新建立用户环境。
通过控制键可以比较容易编辑注册表。虽然它们显示和编辑好象独立的键,其实HKEY_CLASSES_ROOT 和HKEY_CURRENT_CONFIG是 HKEY_LOCAL_MACHINE的一部分。HKEY_CURRENT_USER是HKEY_USERS的一部分。
HKEY_LOCAL_MACHINE包含了HKEY_CLASSES_ROOT和HKEY_CURRENT_CONFIG的所有内容。每次计算机启动时,HKEY_CURRENT_CONFIG和HKEY_CLASSES_ROOT的信息被映射用以查看和编辑。
HKEY_CLASSES_ROOT其实就是HKEY_LOCAL_MACHINE\SOFTWARE\Classes,但是在HKEY_CLASSES_ROOT窗编辑相对来说显得更容易和有条理。
HKEY_USERS保存着缺省用户信息和当前登陆用户信息。当一个域成员计算机启动并且一个用户登陆,域控制器自动将信息发送到HKEY_CURRENT_USER里,而且HKEY_CURRENT_USER信息被映射到系统内存中。其他用户的信息并不发送到系统,而是记录在域控制器里。

键和子键
数据被分割成多层次的键和子键,建立分层次(就象Exploer一样)结构更易于编辑。每个键有成组的信息而且根据在其中的数据类型被命名。每个键在它的文件夹图标上都有一个加号(+)标志子键说明在它下面还有更多内容的东西。当点开它的时候,文件夹的加号标志被替换成一个减号(-)标志,然后显示出下一级的子键。
所有软件,硬件,windows工作的设置都存放在HKEY_LOCAL_MACHINE。所有安全策略,用户权限和共享信息也包括在这个键中。用户权限,安全策略,共享信息可以通过Windows NT域用户管理器,Explorer和Win95中控制面板来设置。
HKEY_CLASSES_ROOT
HKEY_CLASSES_ROOT包含了所有应用程序运行时必需的信息:
在文件和应用程序之间所有的扩展名和关联;
所有的驱动程序名称;
类的ID数字(所要存取项的名字用数字来代替);
DDE和OLE的信息;
用于应用程序和文件的图标;
HKEY_CURRENT_CONFIG.
HKEY_CURRENT_CONFIG是在HKEY_LOCAL_MACHINE中当前硬件配置信息的映射。如果系统只有一个配置文件,也就是原始配置,数据将一直在同样的地方。在控制面板|系统|硬件配置文件|创建一个额外的配置使额外配置信息放入HKEY_LOCAL_MACHINE。当Win95中存在多个配置文件时,当每次计算机启动时将给出一个提示让你选择一个配置文件。在Winnt中,在启动时你可以按空格键来选择上次正常启动时硬件配置文件。根据硬件配置文件选择的不同,特定的信息被映射到HKEY_CURRENT_CONFIG。
HKEY_DYN_DATA
HKEY_DYN_DATA和其他的注册表控制键不同,因为实际上它并不被写入硬盘驱动器中。Win95的一个优点是,在系统启动时HKEY_DYN_DATA这个控制键储存收集到的即插即用信息并配置它们。它保存在内存中,Win95用它来控制硬件。因为是在内存中,所以它不从硬盘中读取,每次当你启动计算机时,配置都有可能会不一样。在启动时Win95必须计算超过1600种可能的配置。所以,如果系统改变既定的设置而没有报告给Win95那么潜在的问题就可能发生。系统大多数时间工作良好,但是并非一直如此。
HKEY_USERS
HKEY_USERS仅包含了缺省用户设置和登陆用户的信息。虽然它包含了所有独立用户的设置,但在用户未登陆网络时用户的设置是不可用的。这些设置告诉系统哪些图标会被使用,什么组可用,哪个开始菜单可用,哪些颜色和字体可用,和控制面板上什么选项和设置可用。
HKEY_CURRENT_USER
用来保存当前用户和缺省用户的信息,HKEY_CURRENT_USER仅映射当前登陆用户的信息。

各主键的简单介绍
HKEY_LOCAL_MACHINE
HKEY_LOCAL_MACHINE是一个显示控制系统和软件的处理键。HKLM键保存着计算机的系统信息。它包括网络和硬件上所有的软件设置。(比如文件的位置,注册和未注册的状态,版本号等等)这些设置和用户无关,因为这些设置是针对使用这个系统的所有用户的。
HKEY_LOCAL_MACHINE\AppEvents
为了以后在瘦客户机上运行客户机/服务器这样的应用程序,在Win95/98中AppEvents键是空的。应用程序实际上都驻留网络服务器上,这些键会保存部分指针。
HKEY_LOCAL_MACHINE\Config
这个键保存着你计算机上所有不同的硬件设置(这些从控制面板的系统属性中硬件配置文件中可以创建)。这些配置在启动时通常被复制到HKCC。每个配置会被用一个键(比如0001或者0002等等)来保存,每个都是一个独立的配置。如果你只有一个单一的配置,那就只会有0001这个键
HKEY_LOCAL_MACHINE\Config\0001\Display
这个键表示显示的设置,如荧屏字体,窗体大小,窗体位置和分辨率等
一个小技巧:当设置了计算机不支持的大分辨率导致Windows不能启动时(黑屏),可以修改分辨率来解决。进入安全模式,运行regedit.exe,在这个键的Resolution键值中把数据值修改为640,480或者800,600这样的低分辨率,然后重新启动计算机即可。
HKEY_LOCAL_MACHINE\Config\0001\System
这个键保存着系统里打印机的信息
HKEY_LOCAL_MACHINE\Config\0001\System\CurrentControlSet\Control\Print\Printers
在这个键下面,有一个键是为系统上每一个打印机设置的,通过控制面板添加和删除打印机会调整这个列表
HKEY_LOCAL_MACHINE\Enum
Enum键包含启动时发现的硬件设备和那些既插即用卡的信息。Win95使用总线列举在启动时通过不同的.ini文件来检测硬件信息。那些在启动时被安装的和被检测到的硬件会显示在这里。子键包括BIOS, ESDI, FLOP, HTREE, ISAPNP, Monitor, Network, Root, SCSI, 和 VIRTUAL。子键名表示它们各自的硬件设备信息。
HKEY_LOCAL_MACHINE\Enum\BIOS
BIOS键保存着系统中所有即插即用设备的信息。它们用一套代码数列出,包括每一个键的详细说明,举例,*pnp0400是并行口LPT1的键。如果LPT1并不具备即插即用功能,它就会别列入到Enum下的Root键中
HKEY_LOCAL_MACHINE\Enum\Root
Root键包括所有非即插即用设备的信息。在这里,我们可以迅速断定哪些设备是即插即用,那些不是。比如SCSI适配器,这个设备必须符合Win95中一个键名为ForcedConfig的硬件设置,这个不会改变。
HKEY_LOCAL_MACHINE\Enum\Network
win95的网络功能在这个键有详细说明,子键包括了每个已经安装的主要的服务和协议。
HKEY_LOCAL_MACHINE\HARDWARE
hardware子键包括了两个多层的子键:DESCRIPTION键,它包含了中央处理器和一个浮点处理器的信息。还有一个设备映射键,它下面的串行键列出你所有的com端口。这个hardware键仅保存超级终端程序的信息,及数学处理器和串行口。
HKEY_LOCAL_MACHINE\Network
这个键仅保存网络登陆信息。所有网络服务细节都保存在HKEY_LOCAL_MACHINE\Enum\Network这个键中。这个键有一个子键,logon,包括了lmlogon(本地机器登陆?0=false 1=true)的值,logonvalidated(必须登陆验证),策略处理,主登陆方式(Windows登陆 ,微软网络客户方式等),用户名和用户配置。
HKEY_LOCAL_MACHINE\SECURITY
security 有两个子键,第一个是存取(它最终致使一个远程键列出网络安全资源,存取权限等)和提供(包括列出网络地址和地址服务器),这个键被保留用在以后使用高级安全功能和NT兼容性上
HKEY_LOCAL_MACHINE\SOFTWARE
这个键列出了所有已安装的32位软件和程序的.ini文件。它包括了变化,依靠软件安装。那些程序的控制功能在这里的子键中列出。多数子键简单的列出了安装软件的版本号。
我们在\Microsoft\Windows\Current Version下发现了一些有意思的设置,它有如下子键:
1.App paths: 你曾经安装过的所有32位软件的位置。
2.Applets, Compression, Controls Folder : 包括下控制面板象显示属性那样属性条的附件。
3.Detect, explorer :很多有意思的子键如Namespace keys of Desktop和My Computer----它们指出了回收站和拨号网络的CLSID行----和提示子键可以让你建立自己的提示。
4.Extensions : 一个扩展联系的列表,当前相关联的扩展名和比特定的执行文件更适合的目标类型。
5.Fonts, fontsize, FS Templates :系统属性条中所选择文件系统模板, 服务器,桌面计算机或者笔记本电脑信息。
6.MS-DOS Emulation :包括一个应用程序兼容子键 为大量过时的程序二进制键所设。
7.MS-DOS Options :在dos模式下的设置,如himem.sys,cd-roms等。
8.Network :网络驱动的配置。
9.Nls, Policies :系统管理员认为你不应该去做的事。
10.ProfileList :所有可以登陆你计算机的用户名列表。
11.在Windows启动时运行的程序的神秘之处是它们并不在开始菜单的启动文件夹中。它们在HKEY_LOCAL_MACHINE\Microsoft\Windows\CurrentVersion\下的子键中被执行。
Run : 程序在启动时运行
RunOnce : windows初始化时程序在启动时只运行一次,这个经常用在当安装软件之后需要重新启动系统的时候,所以这个键一般都是空的。
RunServices : 它就象Run一样,但是包含了“服务”,它不象一般的程序它们是比较重要的或者是“系统”程序。但是它们不是VXDs,就象McAfee或者RegServ工作一样。
RunServicesOnce : 它只运行一次,但是是“系统自身”的安装(大量的windows安装参数:通常键值包括了系统目录位置,和win95更新,可选项安装组件,和windows启动目录的子键。
注意:在很多黑客木马软件中,常常在这里添加键值(一般是在Run中),这样使得木马软件可以随着windows启动而启动并且很隐秘。在这里可以查看不正常的启动项和去掉无用的运行程序(比如我就很不喜欢超级解霸的自动伺服器,在这里可以去掉它)。
12.SharedDLLs:共享DLL的列表,每一个都给出了在一个不可知系统的一个数字等级。
13.Shell Extensions:列出了“被认可的”OLE注册条,和相应的CLSID连接。
14.ShellScrap :这个包含了一个PriorityCacheformats的子键,它包括了一个空的有限值,它更象过去SmartDrive命令行参数的派生。
15.Time Zones : 主键值是你现在的时区;子键定义了所以可能的时区。
16.Uninstall:这个保存了程序在添加/删除程序对话框的显示;子键包含了指向反安装程序的路径。和安装向导相似.......)winlogon(包含了合法登陆布告的文本句)
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet
这个子键包括设备驱动和其他服务的描述和控制。不同于windows nt,win95只包括限制驱动的控制设置信息。
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control
这个子键包括了win95控制面板中的信息。不要编辑这些信息,因为一些小程序的改变在很多地方,一个丢失的项会使这个系统变的不稳定
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services
这个键包括了所有win95的标准服务。所有被添加的服务和设备,每个标准的服务键包括了它的设置和辨认设置。
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Arbitrators
atbitrators键包括了当两个设备共同占用同样的设置需要解决的信息。四个子键包括了内存地址,冲突,DMA,I/O端口冲突和IRQ冲突。
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Class
class键包括了所有win95支持的设备classes控制,这些和你在添加新硬件出现的硬件组很类似,还包括了这些设备如何安装的信息。
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\inetaccs
这个键包括了关于这个系统变化的ie附件的可用性,它仅在你安装过ie2。0或者更高版本才出现。
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MSNP32
msnp32描述了客户机如何在microsoft网络中实现功能,它包括了认证过程和认证者的信息。
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NWNP32
nenp32键描述了windows客户如何在netware网络中工作功能,它包括了关于认证过程和证明者的信息。
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\RemoteAccess
在这个键里包括需要远程工作在win95系统上的信息,有认证参数,主机信息,和为了建立一个拨号连接工作的协议信息。
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SNMP
这个键包括了所以snmp(简单网络管理协议)的参数。它包括了允许的管理,配置陷阱,和有效的团体。
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\VxD
vxd键包括了win95中所有32位虚拟设备驱动信息,win95自动管理它们,所以不必要用注册表编辑器编辑它们,所以的静态vxds用子键列出。
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\WebPost
webpost键包括了所有装载的internet邮局的设置,如果你连接一个isp,并且它列出载这里,你应该给自己选则一个服务器。
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Winsock
这个键列出了当连接到internet上winnsock文件的信息,如果列出了不正确的文件,你将不会连接上internet。
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\WinTrust
wintrust功能是检查从Internet上下载来的文件是否有病毒,它可以确保你得到干净安全的文件。

HKEY_CLASSES_ROOT
在注册表中HKEY_CLASSES_ROOT是系统中控制所有数据文件的项。这个在Win95和Winnt中是相通的。HKEY_CLASSES_ROOT控制键包括了所有文件扩展和所有和执行文件相关的文件。它同样也决定了当一个文件被双击时起反应的相关应用程序。
HKEY_CLASSES_ROOT被用作程序员在安装软件时方便的发送信息,在Win95和Winnt中,HKEY_CLASSES_ROOT和HKEY_LOCAL_MACHINE\Software\Classes是相同的。程序员在运行他们的启动程序时不需要担忧实际的位置,相反的,他们只需要在HKEY_CLASSES_ROOT中加入数据就可以了。
在Windows用户图形界面下,每件事----每个文件,每个目录,每个小程序,每个连接,每个驱动---都被看做一个对象;每个对象都有确定的属性和它联系。HKCR包含着对象类型和它们属性的列表。HKCR主要的功能被设置为:
一个对象类型和一个文件扩展名关联
一个对象类型和一种图标关联
一个对象类型和一个命令行动作的关联
定义对象类型相关菜单选项和定义每一个对象类型属性选项
在Win95中,相关菜单就是当你鼠标右击一个对象时所弹出的菜单;属性就是当你选择属性项后一个展开的对话框。用简单术语来说就是在改变HKCR中的设置可以改变一个给定文件扩展名缺省的关联。改变一个文件类型的缺省图标,和添加或者删除给定对象类型的弹出菜单内容(或者所有的对象类型)
HKCR包括了三种基本类型的子键
\??? 或者文件扩展名子键
文件扩展名子键在弹出菜单上连接文件扩展名到对象类型和相关操作,属性项,和相关操作。
\object 类型子键
对象类型子键定义了一个对象类型在它缺省图标的项,它的弹出菜单和属性项,它的相关操作和它的CLSID连接。
\CLSID 子键
在Windows下每件事都被用一个数字取代它的名字来对待。就象人往往是用名字来处理事情一样。CLSID是标识所有列出的图标,应用程序,目录,文件类型等等对象的数字。是微软为制造商分配的,每一个都必须是唯一的。制造商将CLSID放入安装程序文件这样就可以在安装时更新注册表。
注册表是应用程序进行时它们需要关于做什么的指示的数据库。比如说,假定你有一个微软Excel 7电子数据表的Word 7文档,当你在Word中双击这个电子数据表,应用程序菜单就会变成Excel的菜单而且电子数据表进入编辑状态,就好象你在Excel中一样。它是如何知道该做什么呢?每个Excel 7创建的文件都有Excel的CLSID连接。Word读这个CLSID后,到注册表中寻找指示,依赖CLSID下的数据运行.DLL文件或者应用程序。
CLSID子键为对象类型提供了OLE和DDE信息和图标。相关菜单,或者包含在它子键中的属性项信息。这个可能是多数让人看到后觉得“恐怖”的键。每个CLSID数必须是唯一的,实际上,为了这个目的微软已经出产了CLSID-产生程序--这个结果导致你往往得到32位16进制的数字串,除非你是程序员,否则多数部分键看起来是很枯燥的。它们包括内存管理模式,客户机/服务器配置,和OLE处理的.dll连接。
关于子键的一点注解
1)shell:Shell键有个一”action“子键,如同”open“一样,这里有一个command子键;command子键有一个缺省句值,它包含了运行程序的命令行。将一个”open“子键放在一个对象类型的shell子键中会在这个对象类型的弹出菜单上多出一个”open“选项,给这个open子键一个command(缺省命令行"C:\Windows \Notepad.exe %1")子键会使得打开这个对象类型时使用笔记本做为缺省应用程序。其他操作选项包括View,Print,Copy,Virus,Scan等等。
2)shellex:Shellex键有一个子键。它们包含的每一个子键指向一个为对象类型执行OLE和DDE功能的CLSID项(比如说快速查看,一个菜单处理子键下指向一个有句值的CLSID键列出了包含了文件浏览功能的.dll文件)
3)shellnew:ShellNew包含了一个“command”句,它包含了一个打开对象类型“新”文件的命令行。
4)DefaultIcon:DefaultIcon子键包含了一个“default”句,?/td>

初识注册表 跟我学用注册表(一)
注册表是Windows系统的核心,在 Windows操作系统的启动、运行过程中起着至关重要的作用,但是对于初学者来说,面对注册表往往不知所措,惟恐动一下Windows系统就无法启动了,那么不妨我们一起认识一下注册表吧,掌握注册表的应用技巧,同时还可以学会如何使用一些工具达到对注册表的优化和管理功能,因为Windows Me系统的注册表的操作和Windows 98的比较相似,而Windows XP系统的注册表的操作和Windows 2000的很相似,我们就介绍两种操作系统,大家可以举一反三。让我们开始吧^_^。

什么是注册表
Windows的注册表存储当前系统的软、硬件的有关配置和状态信息,以及应用程序和资源管理器外壳的初始条件、首选项和卸载数据,还包括计算机的整个系统的设置和各种许可,文件扩展名与应用程序的关联, 硬件的描述、状态和属性,以及计算机性能纪录和底层的系统状态信息,以及各类其他数据。每次启动时,会根据计算机关机时创建的一系列文件创建注册表,注册表一旦载入内存,就会被一直维护着,注册表实际上是一个系统参数的关系数据库。

图1
注册表的结构
注册表的层次结构类似于硬盘中的目录树(如图1),只要在Window的“开始/运行”中输入“Regedit”命令,即可打开注册表编辑器。
表1
根键 含义
hkey_local_machine 包含了操作系统及硬件相关信息的配置单元,是一个公共配置信息,与具体用户无关。
hkey_current_user 包含着当前登录到由这个注册表服务的计算机上的用户的配置文件,其子项包含着环境变量、个人程序组、桌面设置、网络连接、打印机和应用程序首选项。
hkey_classes_root 配置单元包含的子项,列出了当前已在计算机上注册的所有com服务器和与应用程序相关联的所有文件扩展名。
hkey_users 包含的子项,含有当前计算机上所有的用户配置文件。
hkey_current_config 包含的子项,列出了计算机当前会话的所有硬件配置信息。
hkey_dyn_data 包含系统硬件的当前状态,也包含了那些需要更新和检索的数据。
(1)Windows 98系统包含6个根键。表1给出了这6个根键的含义解释。
在Windows 2000系统中,包括前5个根键。
(2)键分为用户定义的键和系统定义的键,这些键没有特殊的命名约定,以主“HKEY_”形式配置单元的子目录形式存在,键和子键没有附带数据,它们只负责组织对数据的访问。

图2
(3)子键分为用户定义的子键和系统定义的子键。这些子键也没有特殊的命名约定,它们是作为用户定义或者系统定义的键的子目录形式存在的。键和子键没有相关的数据,它们只是用来组织对数据的访问。
(4)值位于结构链的末端,就像是文件系统中的文件一样。它们包含着计算机及其应用程序执行时使用的实际数据。
注册表的基本操作
(1)向注册表添加项
打开注册表编辑器,将左侧窗口的树型控件定位到Software子键,然后选择“编辑/新建/项”命令,键入新注册表键的名称“mysoft”,最后按“Enter”键(如图2)。
(2)添加值
在注册表编辑器中,单击想要添加新值的注册表键或键值,然后在“编辑”菜单上,指向“新建”,然后单击要添加的值的类型:“字符值”、“二进制值”或“双字节值”(如图3),输入一个新值的名称,然后按 “Enter”键。

图3
(3)修改与删除
修改键值可以选择要更改的值,然后在“编辑”菜单上,单击“修改”命令,接着在“数值数据”框中,输入该值的新数据,最后单击“确定”。
删除注册表键或键值的方法是,单击要删除的注册表键或键值,在“编辑”菜单上,执行“删除”命令。需要注意的是,可以从注册表中删除注册表键和键值。但是,不能删除预定义键,比如HKEY_CURRENT_USER或更改预定义项的名称。
备份注册表
错误地编辑注册表可能会严重损坏系统,所以,在更改注册表之前建议备份注册表信息。
执行“注册表”菜单里的“导出注册表文件”命令,在对话框中输入文件名regedit,默认的后缀名为.reg。在“导出范围”下,如果要备份整个注册表,可以选择选项“全部”,如果只备份注册表树的某一分支,可以单击“选定的分支”,然后输入要导出的分支名称,比如“HKEY_CURRENT_USER\Software”,最后单击“保存”按钮(如图4)。

图4
恢复部分或全部注册表的方法也很简单,在“注册表”菜单上,单击“导入注册表文件”命令,然后在打开的对话框中,查找要导入的文件,单击选中该文件,最后单击“打开”按钮即可。
当系统出现严重故障无法启动时,可以在DOS状态下恢复注册表。在Windows 98系统中,C:\Windows\command目录下有一个scanreg程序,它主要用来扫描系统注册表,并能自动备份最近5次开机时的注册表信息。如果因注册表设置不当导致系统崩溃无法进入Windows 98时,可以在启动时按“F8”键,在出现的菜单中选第五项进入DOS状态,然后输入如下命令:scanreg/restore,之后,选取最早一次正常开机时的注册表信息就可以恢复正常启动时的注册表了。在Windows 2000系统中,还可以用安装程序恢复。?

PC机及其操作系统的一个特点就是允许用户按照自己的要求对计算机系统的硬件和软件进行各种各样的配置。早期的图形操作系统,如Win3.x中,对软硬件工作环境的配置是通过对扩展名为.ini的文件进行修改来完成的,但INI文件管理起来很不方便,因为每种设备或应用程序都得有自己的INI文件,并且在网络上难以实现远程访问。
为了克服上述这些问题,在Windows 95及其后继版本中,采用了一种叫做“注册表”的数据库来统一进行管理,将各种信息资源集中起来并存储各种配置信息。按照这一原则,Windows各版本中都采用了将应用程序和计算机系统全部配置信息容纳在一起的注册表,用来管理应用程序和文件的关联、硬件设备说明、状态属性以及各种状态信息和数据等。

与INI文件不同的是:
1.注册表采用了二进制形式登录数据;
2.注册表支持子键,各级子关键字都有自己的“键值”;
3.注册表中的键值项可以包含可执行代码,而不是简单的字串;
4.在同一台计算机上,注册表可以存储多个用户的特性。

注册表的特点有:
1.注册表允许对硬件、系统参数、应用程序和设备驱动程序进行跟踪配置,这使得修改某些设置后不用重新启动成为可能。
2.注册表中登录的硬件部分数据可以支持高版本Windows的即插即用特性。当Windows检测到机器上的新设备时,就把有关数据保存到注册表中,另外,还可以避免新设备与原有设备之间的资源冲突。
3.管理人员和用户通过注册表可以在网络上检查系统的配置和设置,使得远程管理得以实现。

我们在前面已经详细介绍了注册表的由来与基本结构。发现注册表比较复杂,但又安排得非常有条理,能有效地提高工作效率,为系统的维护提供了必要条件。由于注册表是一个二进制的配置数据库文件(Windows的命根子),因而,用户无法直接存取注册表。为了让高级用户能够编辑注册表,Windows2000提供了注册表编辑器“c”和“Regedt32”。对这种只使用Windows提供的注册表编辑器进行编辑的操作。

编辑器在安装Windows时已经被安装到硬盘中了,但是并未在“附件”程序组中建有快捷方式。用户如果需要使用注册表编辑器,可以在“运行”对话框内输入Regedt32或Regedit即可打开注册表编辑器,如图:

或者在“命令提示符”中执行Regedt32.exe也可以进入注册表编辑器,

了解了关于注册表的基本内容之后,我们就可以正式进入我们所要讨论的话题了:对注册表进行编辑修改!一般来说,要想对注册表进行增、删、改,可以有以下三种途径:

第一种途径:直接修改(最不安全,但最直接最有效)

就是通过注册表编辑器直接的来修改注册表的键值数据项,这样做会避免在注册表中留下垃圾(虽然都很小,但越来越多会拖慢系统速度),但是要求用户有一定的注册表知识,熟悉注册表内部结构而且一定要小心谨慎。

注册表编辑器是一个可以让你改变系统注册设定的高级工具WIN98注册表编辑器的常用操作注册表编辑器是一个可以让你改变系统注册设定的高级工具,有经验的Windows用户可以通过编辑注册表改变系统设定。

启动注册表编辑器的方法是执行Windows文件夹下的REGEDIT.EXE(在WINNT和Windows 2000中还有REGEDIT32.EXE)。

下面详细介绍Win98注册表编辑器常用的操作。

(一)、恢复注册表

1.单击“开始”,再单击“关闭系统”;

2.单击“重新启动计算机并切换到MS-DOS方式”,然后单击“是”;

3.进入Windows目录下。例如,如果你的Windows安装在C:\Windows目录下,应键入以下内容CD C:\WINDOWS后回车;

4.在MS-DOS模式下键入C:\WINDOWS\COMMAND\SCANREG/RESTORE后回车。

按照上述步骤,可以将注册表恢复到最后一次启动计算机时的状态。

(二)、将注册表中的所有内容导出到一个文本文件中

1.在注册表编辑器中单击“我的电脑”将导出所有注册表信息,或者单击一个文件夹仅仅导出该文件夹下内容的注册信息;

2.在“注册表”菜单上单击“导出注册表文件”;

3.单击“浏览”为导出的文件寻找一个存储位置,即文件夹,然后为之输入一个文件后保存。

这样导出的注册表信息文件,可以在任何一种文本编辑器中编辑。

(三)、导入或局部导入注册表

1.在“注册表”菜单中,单击“导入注册表文件”;

2.单击“浏览”找到要导入的文件,然后单击“打开”。

(四)、添加主键

1.打开注册表列表,找到要添加主键的文件夹;

2.右击要加入主键的文件夹;

3.将鼠标指向“编辑”菜单下的“新建”,然后单击“主键”;

4.新的主键是以一个临时名字显示的,为新的主键输入一个名字,然后回车即可;如果添加新的主键后,导致了计算机不能正确启动的情况,可以恢复注册表信息。

(五)、添加键值

1.打开注册表列表,选中要添加新键值的文件夹;

2.右击要添加新键值的文件夹;

3.将鼠标指向“新建”,然后单击需要添加键值的类型。这些类型包括“字符串值”、“二进制值”和“DWORD”值;

4.新添加的键值以一个临时键值显示,为新添加的键值输入一个新的值,然后回车即可。

第二种途径:软件修改(安全)。利用各种工具软件,完成对注册表的编辑工作

通过一些专门的修改工具来修改注册表,比如:MagicSet、TweakUI、WinHacker等等。其实控制面板就是一个这样的工具,只不过功能简单一些。下面对几个常用注册表修改软件作简要介绍(以下介绍的软件均可到:

1.超级兔子魔法设置 Magic Set。 是个与Tweak UI类似的系统设置软件,所具备的功能比Tweak UI和国内同类软件还要多,而且是全中文的,特别为中国用户设计的功能有:调整输入法的顺序、修改当前系统的语言、修改开始菜单的“程序”“文档”等,Magic Set 是真正全面的系统设置软件,修改Win98易如反掌。从Magic Set V2.98 起,无须注册,即可使用所有功能,配合大众软件新文章的设置,让你的Win98 真正如虎添翼!

①真正支持OE5;

②能够在修改系统文件夹的路径时(比如:收藏夹位置),拷贝或移动文件到新的目录;

③完全配合大众软件2000年第2、3期文章:“Windows 98终极指南”,加入所有新的设置:优化MapCache、优化的硬盘后台缓冲加速Vcache、恢复关闭系统时的“睡眠模式”选项;

④清除所有硬盘的*.bak、*.tmp 等垃圾文件;

⑤更高级的鼠标右键菜单修改;

⑥密码探测器;

⑦公开只有注册用户才能使用的:高级隐藏功能,能够隐藏开始菜单的程序、收藏夹等项目;

⑧以一变三的输入法,将一个输入法变成三个。

⑨软件已经可以在Win2000 下使用。下载网址:http://www.soft999.com/download1/ms33.zip

2.再生良药/Relive V1.03 184KB。在Windows95/98的日常操作中,有非常多的软件都会在注册表中写入相关信息,如:窗口的位置、注册码、软件设置、文件关联、日期限制等,即使卸载这些软件,也会留下一些垃圾,以至注册表越来越大,系统越来越慢。

绝大部分软件在安装时会向系统的SYSTEM目录中COPY一些DLL文件,在Windows目录中生成INI文件,即使是卸载它们也不一定能删除干净,理论上将它们不会影响Windows的速度,但却占据了无谓的硬盘空间,让人不爽。只要我们将注册表中信息和这些垃圾文件删除,Windows便可以焕然一新。现在有很多小工具可以从注册表中删除无用的键,但没有任何程序保证其中的删除操作是绝对安全的,真正绝对安全的办法就是恢复注册表,这个问题很好解决,但如何判断那些文件是多余的文件,是可以删除的呢?Relive便是针对这个问题而编写的小程序,Relive本身不会在Windows中删除任何文件。主要通过备份和恢复注册表和Win.ini、system.ini来实现。下载网址:http://www.soft999.com/download1/relive103.zip

3.超级兔子注册表优化RegOpt V3.1 简体版 453KB

能够查找Windows 98的注册表中的垃圾,并给予清除,功能上超越微软的RegClean 4.1a,而且修正了RegClean的Bug。最新的版本能够清除更多的注册表垃圾,让你的系统真正干净。能够扫描的错误与垃圾包括:错误的类,错误的菜单排序,错误的反安装程序,不存在的文件,错误的Dll和Vxd文件。下载网址:http://www.soft999.com/download1/regopt.zip

4.超级兔子注册表扫描 V3.3 简体版 456KB

超级兔仔注册表优化软件能够查找Windows 98的注册表中的垃圾,并给予清除,功能上超越微软的RegClean 4.1a,而且修正了RegClean的Bug。最新的版本能够清除更多的注册表垃圾,让你的系统真正干净。能够扫描的错误与垃圾包括:错误的类,错误的菜单排序,错误的反安装程序,不存在的文件,错误的Dll和Vxd文件。新版本增加了系统优化功能,配备三种语言的操作界面,除了适合Win95/97/98使用外,V2.9 版还能在最新的Win2000 下使用,,绝对让你的系统真正优化。下载网址:http://www.soft999.com/download1/regscan.zip

5.注册终结者 V2.7 完全版 953KB

本软件属于一个注册表修改软件!使用本软件可轻松地修改Windows 98系统设置,让你进一步地控制操作系统,扩展Windows的功能,方便自己的日常应用操作及管理。(使您轻松成为修改注册表的高手)作者:主要针对目前较流行的Windows 98 第二版编程,对第一版同样适用!下载网址:http://www.soft999.com/download2/regend2.7.zip

6.米老鼠注册表减肥 V1.6 215KB

快速清除注册表垃圾,清除前自动备份。可删除不使用的时区、区域、键盘布局、登录的软件、Windows外观方案。下载网址:http://www.soft999.com/download2/mlsregclean.zip

7.神奇注册表 562KB

本软件是一个注册表修改软件!使用本软件可轻松地修改Windows98系统设置,使您立刻成为注册表专家!本软件使用Microsoft Visual C++编制,整个软件只需要一个可执行文件就可运行,真正的“绿色”软件。下载网址:http://www.soft999.com/download2/msreg.zip

8.注册表吸尘器 V0.60 136KB

“注册表吸尘器”并不能帮你把注册表缩小许多,但它能帮你解决许多实际问题。它能帮你把注册表中的垃圾“吸”出来,以使你的软件正常工作。有些软件可能需要重新安装,但有时注册表中的垃圾不除,即使重新安装也不能解决问题。希望你喜欢本软件。能帮你找出并清除错误的文件类型、错误的类型库(TypeLib)、注册错误的控件、错误的程序标识(ProgID)等。你可以自由选择是否删除每个错误的项目,并可察看出错原因。下载网址:http://www.soft999.com/download2/RegVCCleaner.zip

9.RegSnap V2.8 Build 632 114KB

它可以详细地向你报告注册表及其他与系统有关项目的修改变化情况。RegSnap 对系统的比较报告非常具体,对注册表可报告修改了哪些键,修改前、后的值各是多少;增加和删除了哪些键以及这些键的值。报告结果既可以以纯文本的方式,也可以 html 网页的方式显示,非常便于查看。除系统注册表以外,RegSnap 还可以报告系统的其他情况:Windows 的系统目录和系统的 system 子目录下文件的变化情况,包括删除、替换、增加了哪些文件;Windows 的系统配置文件win.ini 和 system.ini 的变化情况,包括删除、修改和增加了哪些内容;自动批处理文件 autoexec.bat 是否被修改过。该软件可以在需要的时候方便地恢复注册表,可以直接调用 regedit 程序查看或修改注册表,还可以查看当前机器的机器名和用户名。下载网址:

10.Customizer 2000 V5.7 567KB

Customizer 2000可以让你通过一个安全的图形化界面里来调整注册表信息。这个软件让你可以浏览和改变许多Windows98中的秘密设置,并且每一个可以修改的设置都会有一些简单的说明。 下载网址:http://www.soft999.com/download2/cstmiz.zip

11.CleanReg V3.3.3 1442KB

CleanReg3帮您将系统中无用的文件全部一扫而空。CleanReg3与一般系统登录文件修改工具软件不同的是,它并非真正立即将这些登录设定给移除掉,而是先将您的系统中目前有那些文件连结有错误的先显示出来,然后您可以再选择是要透过手动的方式选择是要忽略掉这些无用的文件或者是要移除掉。下载网址:http://www.soft999.com/download2/CleanReg3.exe

12.EasyClean V4.0.0.5 990KB

是一个辅助使用者整理registry的工具软件。必须要对registry有一定的了解,才有办法判断应该怎麽使用他来清除Registry当中的垃圾。是一个设计给专家使用的工具。下载网址:http://www.soft999.com/download2/EZClean4.EXE

13.RegEasy V2.0(正式版) 94.1KB

功能:方便您更改注册表,即使您一点也不懂注册表的更改!您只要选择自己需要更改的项目,再点击更改即可。2.0版新增许多功能,并完善了其它的各项功能。经过作者的不懈努力终于有正式版出台了!本软件是免费软件!下载网址:http://www.soft999.com/download1/RegEasy20.zip

14.Regmon V4.32 Win95/98 66KB 下载网址:http://www.soft999.com/download2/regmon95.zip

Regmon V4.32 Win NT/2000 66KB 下载网址:http://www.soft999.com/download2/ntregmon.zip">

Regmon (Registry Monitor) 是一个出色的注册表数据库监视软件,它将与注册表数据库相关的一切操作(如读取、修改、出错信息等)全部记录下来以供用户参考,并允许用户对记录的信息进行保存、过滤、查找等处理,这就为用户对系统的维护提供了极大的便利。

15.NT Perfect Companion V3.7.04 1677KB

Perfect Companion 包括两个工具:SnapShot 可以在你安装软件前为系统文件进行扫描和快照,当软件安装结束后,它会向你报告哪些文件改变了、那些文件被旧版本文件覆盖掉了、或是向系统中增加/删除了哪些文件。而 Registry Cleaner,可以将那些注册表中无用的垃圾清除掉。它可以扫描所有的 Class IDkeys,然后再对系统文件进行扫描来找出那些无用的信息。为了安全起见,软件还提供了 Undo 功能。必需先有 VB5 Runtime。下载网址:http://www.soft999.com/download2/Ntperfec.zip

16.Perfect Companion V3.7.04 Win9x/Me 1679KB 下载网址: http://www.soft999.com/download2/Perfect.zip

Perfect Companion V3.7.04 WinNT/2000 1677KB 下载网址:http://www.soft999.com/download2/Ntperfec.zip
包括两个工具:SnapShot可以在你安装软件前为系统文件进行扫描和快照,当软件安装结束后,它会向你报告哪些文件改变了、那些文件被旧版本文件覆盖掉了、或是向系统中增加/删除了哪些文件。 而Registry Cleaner,可以将那些注册表中无用的垃圾清除掉。它可以扫描所有的Class IDkeys,然后再对系统文件进行扫描来找出那些无用的信息。为了安全起见,软件还提供了Undo功能。

17.Registry Cleaner V2.0.1.5 711KB

清除 Windows 注册表多余记录的工具。下载网址:http://www.soft999.com/download1/regcln.exe

18.Registry Compare V1.30 664KB

每新安装一套程序在电脑中,你知道它对系统注册表做了哪些改变吗?利用Registry Compare在安装程序前做个系统注册表快照,再于安装该程序后,回到Registry Compare,再做一次快照,Registry Compare就会将前后系统注注册表的差异明细列出供你参考。下载网址:http://www.soft999.com/download2/RGCOMPARE.EXE

19.Registry Tools V2.01 832KB

大多数Windows使用者应该都知道Windows注册表是相当重要的。通常安装件或反安装软件都会更改到注册表,有经验的使用者大都会事先将注册表备份起来,待无法进入Windows时即可用来恢复。虽然备份Windows注册表有很多方式和工具可作到,不过,RegistryTools仍有它独到的特色。RegistryTools以容易使用的图示操作界面,包含了三个主要功能,有:备份注册表(BackupRegistry)、恢复注册表(RestoreRegistry)、制作紧急修复磁片(MakeFIX-ITDisk!)等功能,只需在RegistryTools图示操作界面使用滑鼠轻按一下即可备份、恢复注册表或制作紧急修复磁片。下载网址:http://www.soft999.com/download2/regtools2.zip

20.Registry Optimizer V4.0 52KB

Windows因安装软件或硬件都会更改系统配置文件(System.dat 及 User.dat)长久下来因安装及移除导至Windows系统配置文件也变的越来越大及凌乱,也会影响系统正常运作,这也就是Windows在使用过一阵子后便会出现当机的主因之一,Registry Optimizer可以最佳化Windows系统配置文件,经过一段时间的优化,可将系统配置档 (System.dat 及 User.dat)减肥,但并不影响系统正常运作,并且能让硬盘多些空间及让系统跑的更顺畅。下载网址:http://www.soft999.com/download1/regop.zip

第三种途径:编程

虽然微软公司提供一个注册表编辑器程序,用于更改系统注册表中的设置,但是如果你对注册表没有完全弄懂,就有可能酿成大祸——严重的可能造成系统瘫痪;尽管我们还有以上介绍的那么的工具软件可以帮助我们处理注册表,但可能仍然满足不了我们某些关于注册表的特殊要求。比如,当我们编制了一个应用程序时,如何将应用程序的设置信息及相关数据在安装程序时写入注册表中呢?

在这种情况下,这就需要我们理解如何通过程序来操作注册表并且写入或删除相关的信息。编程人员希望能在应用程序中对其加以控制,于是就产生了第三种方法:自己编写程序。

只要您认真阅读了本专题以上所有内容,只要您对编写程序感兴趣,就应该继续看下去。它将教会您如何随心所欲地完成所有与注册表有关的问题。

许多商品化的软件或专业化的软件在您的机器上首次安装的时候都会通过改写注册表来完成软件的正确安装运行,梦想成为编程高手的你当然需要掌握读写注册表这一技术。利用好注册表会为您的应用程序增色不少。

关于注册表的知识相信您通过前面专题的介绍已经有了较深入的了解。系统有六个预定义好的关键字(根键),这六个关键字是用户或系统访问注册表的入口点。我们常用到的只有前四个关键字。而在编程时我们一般用到只是HKEY_CURRENT_USER和HKEY_LOCAL_MACHINE这两个关键字,因为与应用程序相关的数据存在于这两个关键字下。

后面将为你详细介绍如何通过程序来操作注册表。请看“编程所需的有关准备知识”和“编程解决注册表问题实例”部分。