关于上次的MS-DOS,一个词,麻烦,但是并不难!!
这次是注册表,大虾们别骂我呀,菜鸟好好看!!!
这次讲的是Windows注册表,有机会讲讲DOS底下搞搞注册表,极有趣,但是,唉,烦烦烦!!!
p align="left"> 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也可以进入注册表编辑器,
后面的内容将介绍注册表编辑器的使用方法,如创建删除主键、子键以及键值等,同时还将给出一些修改注册表的实例。
首先我们来看看注册表与Windows 98文件系统的关系。
Windows 98的注册表Registry由以下的六个文件组成:
1.系统配置的注册表文件System.dat
在Windows 9x的系统目录c:\windows中有一个隐含、系统、只读文件System.dat,它是Windows 98注册表的一部分,该文件具有如下作用:
1)描述单一的PC配置。
2) 描述安装在单一PC上的消息。
3)安装即插即用类型的设备硬件配置,如设备的I/O地址、IRQ级和DMA通道等等的情况。这个文件在Windows 98的网络运行状态时,保存在本地的工作站或本地PC机系统中。在Windows 98的安装期间,Setup将首先检查你的计算机上已经安装了的硬件设备,然后在System.dat中建立适当的配置项。若从现有的Windows 3.x中升级安装Windows 98,则Setup将把现有的System.ini 、Reg.dat文件中的部分设置项拷贝到System.dat中,以保持系统的设置。
我们经常使用“控制面板”的“系统”图标来修改系统的硬件设备和配置情况,这个时候我们进行的操作都是从System.dat中读取的系统属性设置。这个文件的作用很类似于Windows 3.x中的System.ini文件。
2.系统配置的注册表备份文件System.da0
Windows 98的注册表的一个非常重要的特点就是可靠性强,稳定不易损坏。这就需要靠注册表的备份文件system.da0。
系统配置注册表System.dat的备份文件为System.da0,该文件在System.dat文件遭到意外破坏时,将由系统在启动的时候自动拷贝为System.dat。这对于并不稳定的Windows 98系统来说是非常重要的,至少给系统提供了一点重要的稳定机制。
3.用户平台配置的注册表文件User.dat
在Windows 98的系统目录c:\windows中有一个隐含、系统、只读文件User.dat,它也是Windows 98的注册表的重要组成部分,这个文件具有这样的作用:
1)它定义用户优先权,如用户平台设置,运行级等等。
2)特定于某一个用户的应用程序的安装信息,应用程序的使用信息等等。如果你是使用局域网的话,当你在Windows 98中使用网络时,Us dat必须放在网络服务器上。对于单机来说,配置了网络属性的是保存在本机的系统目录下的。
在你第一次输入用户名和密码时,Windows 98程序将把这些信息存储在User.dat中,同时你的Windows 98的系列号也存储在USER.DAT中。如果用户在“控制面板”的“密码”图标中选择了“用户可自定义首选项及桌面设置登录时,Windows自动启用个人设置”这个选项后,Windows 98系统将会为每个用户创建他自己的User.Dat,并且把它保存为C:\Windows\Profiles\用户名\User.dat。在用户每次登录后,他自己的User.dat就会被调入到系统中,同时启动自己相应的程序信息。该文件的作为类似于Windows 3.x 系统中的Win.ini文件。
4.用户平台配置的注册表备份文件User.da0
用户平台配置的注册表文件User.dat也有一个备份文件User.da0。当User.dat遭到意外破坏时,将由系统将User.da0拷贝为User.dat,从而使User.dat得到了恢复。
5.网络管理注册表文件Config.pol
Config.pol文件是一个隐含、系统、只读文件,它主要用于Windows 98的网络用户的管理方面的策略。
如果你在Windows 98系统里安装了“系统策略编辑器”后,则用户可以使用Config.pol文件中的限制来决定系统用户的操作权限如执行程序、修改注册表等等,这也就是说,系统根据Config.pol文件中的设置对网络用户的操作作一些限制,这种限制在Windows 98系统中被称为“策略”。
6.网络管理注册表备份文件Config.po0
Config.pol也有一个备份文件Config.po0,它是一个隐含、系统、只读文件。它存放在网络服务器中。重要是在config.pol损坏时起到恢复作用。
看了注册表的文件组成,我们再来看看Windows 98系统注册表Registry与INI文件之间的关系
注册表Registry与Windows 98中的INI文件有许多相似之处。注册表中的键或子键类似于INI文件中的小节,一个键值项对应于INI文件中小节里的一条设置项。
但是我们还是很容易发现他们之间的区别的:首先Registry可以包括子键,而INI文件不支持小节的嵌套;其次Registry中的键值项还可以包含可执行代码,而在INI文件中设置项只是简单的字串;第三是在同一台计算机上有多个用户,Registry可以存储每个用户的特性,而INI文件中却不可能做到。
如果你的计算机系统是从Windows 3.x上升级到Windows 98的,则安装程序会从System.ini和Win.ini文件文件中选择一些系统设置信息放入到注册表中。不过,为了与以前的Windows版本上的老式16位应用程序保持兼容,INI文件中的有些设置项不能迁移到Windows 98的注册表中。
1).注册表中有关Win.ini的信息
有关Win.ini的信息的所有的子键都处于注册表的HKEY_CURRENT_USER根键中。在HKEY_CURRENT_USER子键分支下能看到[desktop] GridGranularity Control Panel\desktop ;Pattern Control Panel\desktop ;
TileWallPaper Control Panel\desktop ;
[windows] ScreenSaveActive Control Panel\desktop ;ScreenSaveTimeOut Control Panel\desktop
[Sounds] Sound Event Name AppEvents\Schemes\Apps\.Default\Sound Event Name\.current
[Hearts] Name Software\Microsoft\Windows\CurrentVersion\Applets\Hearts 等在Win.ini文件中的信息
2).注册表中有关System.ini的信息
有关System.ini的信息的子键都处于注册表的HKEY_LOCAL_MACHINE根键中。根据机器的网络配置,有些系统可能不会出现某些子键。我们打开HKEY_LOCAL_MACHINE目录分支可以看到这些相关的信息。如
[Network]
Comment System\CurrentControlSet\Services\VxD\VNETUP
ComputerName System\CurrentControlSet\Control\ComputerName\ComputerName
EnableSharing
LMAnnounce System\CurrentControlSet\Services\VxD\VNETUP
LogonDomain
Logon Validated
MaintainServerList System\CurrentControlSet\Control\ComputerName\ComputerName
Reconnect
Reshare
Username Network\Logon
Workgroup System\CurrentControlSet\Control\ComputerName\ComputerName
[386Enh] Network
Transport Software\Microsoft\Windows\CurrentVersion\Network\Real Mode Net
在这里只是简单的介绍了注册表与Windows 98文件系统和INI文件之间的一些关系,这对于我们深入认识Windows 98系统并解决相关的问题很有帮助,在后面我们将详细介绍有关注册表的知识和更多的修改技巧。
div align="left">
在Windows98的注册表中,所有的数据都是通过一种树状结构以键和子键的方式组织起来,就象我们的磁盘文件系统的目录结构一样。每个键都包含了一组特定的信息,每个键的键名都是和它所包含的信息相关联的。如果某个键包含了子键,则在注册表编辑器窗口中代表这个键的文件夹的左边将有“+”符号,以表示在这个文件夹中有更多的内容。如果这个文件夹被用户打开了,那么这个“+”就会变成“-”,我们可以象打开文件夹一样层层的打开注册表树,当然我们有时并不清楚我们要找的键在哪个目录分支下面,我们就得搜索相应的关键字。我们来看看注册表树最顶层的六个分支所分别代表的含义,这样我们在修改的时候就可以做到心中有数了。
1.HKEY_CLASSES_ROOT
管理文件系统。根据在Windows 98中安装的应用程序的扩展名,该根键指明其文件类型的名称,相应打开该文件所要调用的程序等等信息。
2.HKEY_CURRENT_USER
管理系统当前的用户信息。在这个根键中保存了本地计算机中存放的当前登录的用户信息,包括用户登录用户名和暂存的密码。在用户登录Windows 98时,其信息从HKEY_USERS中相应的项拷贝到HKEY_CURRENT_USER中。
3.HKEY_LOCAL_MACHINE
管理当前系统硬件配置。在这个根键中保存了本地计算机硬件配置数据,此根键下的子关键字包括在SYSTEM.DAT中,用来提供HKEY_LOCAL_MACHINE所需的信息,或者在远程计算机中可访问的一组键中。
这个根键里面的许多子键与System.ini文件中设置项类似。
4.HKEY_USERS
管理系统的用户信息。在这个根键中保存了存放在本地计算机口令列表中的用户标识和密码列表。同时每个用户的预配置信息都存储在HKEY_USERS根键中。HKEY_USERS是远程计算机中访问的根键之一。
5.HKEY_CURRENT_CONFIG
管理当前用户的系统配置。在这个根键中保存着定义当前用户桌面配置(如显示器等等)的数据,该用户使用过的文档列表(MRU),应用程序配置和其他有关当前用户的Windows 98中文版的安装的信息。
6.HKEY_DYN_DATA
管理系统运行数据。在这个根键中保存了系统在运行时的动态数据,此数据在每次显示时都是变化的,因此,此根键下的信息没有放在注册表中。
在Windows98 ⒉岜碇校峭ü妥蛹垂芾砀髦中畔ⅰM保⒃诓岜砝锩娴乃行畔⑹且愿髦中问降募迪钍荼4嫦吕础T谧⒉岜肀嗉鞯挠掖翱谥校4娴亩际歉髦旨迪钍荨<迪钣杉得⑹堇嘈秃图等糠肿槌桑涓袷轿骸凹得菏堇嘈停杭怠薄?nbsp;这些键值项数据可分为如下三种类型:
1.字符串值(S)
在Windows98的注册表中,表示文件的描述、硬件的标识等等信息一般都用字符串值。字符串值由字母和数字组成,它的最大长度不能超过255个字符。通过键、键值就组成了一种键值项数据,这就相当于Win.ini、Ssytem.ini文件中每个小节下面的设置行一样的道理。
2.二进制值(B)
在Windows的注册表中,二进制值是没有长度限制的,可以是任意个字节长。在注册表编辑器中,二进制以十六进制的方式显示出来。
3.DWORD值(D)
在Windwos98的注册表中,DWORD值是一个32位(双字节长)长度的数值。在注册表编辑器中,系统以十六进制的方式显示DWORD值。
在修改中这么多子键并不一定都用得作,其中对我们最有用还是 HKEY_LOCAL_MACHINE和 HKEY_USERS这两个键下面的子键:
我们先看看 HKEY_LOCAL_MACHINE键先面的几个重要的子键及其作用:
1)HKEY_LOCAL_MACHINE\software\microsoft\windows\currentVersion\uninstall 保存Windows98系统中已经安装了的Windows应用程序卸载信息。
2)HKEY_LOCAL_MACHINE\system\currentControl-Set\control\keyboard Layouts 保存Windows98中键盘使用的语言以及各种中文输入法的信息。
3)HKEY_LOCAL_MACHINE\software\microsoft\windows\currentVersion\explorer\user shell folders 保存计算机中个人文件夹、收藏夹的路径。
4)HKEY_LOCAL_MACHINE\system\CurrentControl-Set\services\class 保存控制面板-增添硬件设备-设备类型目录,全面管理你的硬件信息。
5)HKEY_LOCAL_MACHINE\software\microsoft\win-dows\currentVersion\run 保存由控制面板设定的计算机启动时运行程序的名称,其图标显示在任务条右边。这也是我们经常修改和用到的一个目录。
6)HKEY_LOCAL_MACHINE\software\microsoft\windows\currentVersion\Policies\Ratings 保存了IE的“安全”\“分级审查”中设置的口令(数据加密),若遗忘了口令,删除 Ratings 中的数据即可解决问题。
7)HKEY_LOCAL_MACHINE\software\microsoft\windows\currentVersion\explorer\desktop\nameSpace 保存桌面中特殊的图标,如回收站、收件箱、网上邻居等等,你可以把它改得面目全非,人家都认不出来。
先面我们再来看看另外一个重要的键HKEY_USERS下面的重要分支:
1)HKEY_USERS\.Default\so..\microsoft\windows\current-Version\explorer\RunMRU保存“开始 \ 运行...”中运行的程序列表信息。清除文档菜单时该分支将被清空。
2)HKEY_USERS\.Default\software\microsoft\internet explorer\typeURLs保存IE4.0浏览器地址栏中输入的URL地址列表信息。清除文档菜单时它也将被清空。
3)HKEY_USERS\.Default\so..\microsoft\windows\current-Version\explorer\RecentDocs 保存最近使用的十五个(数目是可以修改的)文档的快捷方式,清除文档菜单时将被清空。
4)HKEY_USERS\.default\software\microsoft\windows\currentVersion\applets 保存Windows98应用程序的记录数据信息。
在上面我们大致介绍了Windows98的注册表的结构和重要的信息,这对于我们修改注册表是非常有用的。
Windows注册表,是关系到整个Windows系统“生死存亡”的重要文件,注册表一但出现问题,轻者导致软件无法正常运行,重者可能导致整个操作系统崩溃,最后只能重装操作系统。那么怎样才能使注册表比较安全呢?主要的方法之一就是备份注册表,然后就是不让他人随便修改注册表。下面就本人在使用电脑时的一些小技巧写出来与大家一同分享!
1.让Windows 95具有Windows 98自动备份注册表的功能
首先在装有Windows 98的计算机上将Windows目录下的Scanregw.exe文件和Scanreg.ini文件拷贝到Windows95计算机的Windows目录中,然后运行Regedit.exe文件修改注册表,在HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run下添加一字符串ScanRegistry并将其键值设为C:\WINDOWS\scanregw.exe/autorun,最后重新启动计算机即可。备份后的文件是以cab结尾的压缩文件,存放在Windows目录下的Sysbckup隐含子目录下系统默认的文件名是rb000.cab、rb001.cab、rb002.cab、rb003.cab、rb004.cab,使用时可以用解压软件打开或用DOS下的Extract命令解开。
2.去掉Windows Me中注册表的记忆功能
用过Windows Me的用户可能已经发现Windows Me中的Regedit.exe(修改注册表的工具)具有记忆功能,它能记住上次用户修改或查看注册表的具体地方,有些用户可能想去掉这个讨厌的功能,以便保护个人隐私,经过笔者的试验将此功能屏蔽了。具体的做法就是将Window98下的Windows目录中的Regedit.exe拷贝到Windows Me相应的Windows目录中即可(在拷贝前请将Windows Me中原有的Regedit.exe改名为Regedit1.exe)。
3.让Windows 95的DOS方式下能具有Windows 98 DOS方式下的修复、备份和恢复备份注册表的功能
在Windows 98中的纯DOS方式下修复注册表,使用的命令是Scanreg.exe,但是在Windows 95下的纯DOS方式下却没有这一功能,经过笔者的试验,只要将Windows 98系统中Windows目录下的Command目录中的Scanreg.exe拷贝到Windows 95的相应目录即可。修复注册表的具体命令是canreg /fix,备份注册表的具体命令是:scanreg /backup,恢复注册表的具体命令是:scanreg /restore。
4.防止非法用户使用注册表编辑器
有时为了使系统注册表变得更加安全,可以设法防止别人修改注册表,具体做法是运行注册表编辑器在HKEY_CURRENT_USER\Software\Microsoft \Windows\CurrentVersion\Policies\System下新建一个名为DisableRegistryTools的DWORD值,并将其值改为“1”即可。若要想重新使用注册表编辑器,请在任何一种文本编辑器中将下列内容输入其中并存为Regtools.reg文件:
REGEDIT4
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\System
"DisableRegistryTools"=dword00000000(注:在REGEDIT4后面一定要空一行),然后在用鼠标双击Regtools.reg文件,并将其导入注册表即可。有时为了防止一些电脑高手也使用此种方法解除对注册表编辑器的限制,就得使.reg文件不能用系统默认的方式打开,具体的修改方法是运行注册表编辑器将HKEY_CLASSES_ROOT\.reg下的默认值改为“txtfile”这样就可对.reg文件进行限制了。这时用户自己也无法将.reg文件加入注册表中,同时也没法使用注册表编辑器了。经过笔者的进一步研究,只要在事先编辑好的Regtools.reg文件上按住Shift键的同时,按下鼠标右键选择打开方式,从中选取Regedit打开就可以了,这样即可将Regtools.reg导入注册表。要想真正完全限制用户,只能借用第三方软件了。
希望各个朋友能与我共同探讨有关电脑使用中的问题。
Windows NT注册表的组成与分析
和Windows9x一样,Windows NT也有注册表。注册表是保存系统配置的重要数据库,不过,与Windows 9x相比,它只包含五个部分:
(1)HKEY-LOCAL-MACHINE:用于保存本机系统的信息,包含硬件与操作系统的数据,如驱动程序、系统配置信息等;
(2)HKEY-CLASS-ROOT:用于保存与关联有关的信息;
(3)HKEY-CURRENT-CONFIG:保存与当前的硬件配置文件有关的数据;
(4)HKEY-CURRENT-USER:保存与当前登录的用户有关的环境设置的数据,包含桌面设置、网络连接等;
(5)HKEY-USERS:保存当用户登录时,所有必须载入的用户配置文件数据,包含缺省的配置文件和登录者的环境配置文件。
另外,在WINNT中启动注册表编辑器,应该执行"开始/运行"命令,在"运行"对话框中输入REGEDIT32.EXE(而不是Windows 9x的REDEDIT.exe),并确定。
Windows Me注册表的组成与分析
与Win 98不同,WinMe的注册表是由Windows目录下的Classes.dat、User.dat(用户配置信息)和System.dat(系统配置信息)三个二进制文件组成的,其"项值"与Win 98一样有字串值(REG_SZ)、二进制值(REG_BINARY)、双字节值(REG_DWORD)三种类型。
与Win 98相同,WinMe也有个注册表编辑器Windows\Regedit.exe(见图1),用来搜索或修改注册表。
WinMe注册表编辑器左边窗口中,最上面一层是"我的电脑",下面有6个分支:HKEY_CLASSES_ROOT、HKEY_CURRENT_USER、HKEY_LOCAL_MACHINE、HKEY_USERS、HKEY_CURRENT_CONFIG、HKEY_DYN_DATA,各分支的功能简要描述见表1。
分支名 功 能
hkey_classes_root 所有用户都要使用该分支,存放可打开文件的类型、扩展名以及与应用程序的关联等
hkey_current_user 保存当前登录用户的系统设置、控制面板选项、映射的网络驱动器等?
hkey_local_machine 保存机器上的所有硬件信息、本机上安装的应用软件信息
hkey_users 保存所有用户的信息,例如安装的应用软件、自定义桌面等
hkey_current_config 计算机上连接的硬件(例如显示器、打印机等)配置数据
hkey_dyn_data 保存系统性能和即插即用状态的动态信息
WinMe注册表六大根键的功能简要描述表
与Win 98的Regedit相比,WinMe的注册表编辑器功能有所增加,表现在:
1.具有记忆功能,每次打开它时,左边窗口中的树形主键分支会自动展开,将焦点定位在最近一次修改过的位置上;
2.选单栏中新增类似IE的收藏选单,提供收藏夹功能(添加、删除收藏夹),可让您快速定位到需要修改的主键位置。
假如需要经常检查系统启动时自动调入了哪些程序,可以打开HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run和
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run,用Win 98的注册表编辑器找这两个项,需要多次双击分支,打开一级又一级的注册表项,在WinMe中,这种操作就要轻松多了,只要将以上两项添加到注册表编辑器的收藏夹中,使用时如同用IE那样,打开收藏项即可。添加到收藏夹的方法是:找到要收藏的注册表项,执行选单上的"收藏/添加到收藏夹",弹出对话框,给该收藏项命名,按"确定"。
认识Windows2000注册表
Windows 2000 将它的配置信息存储在名为注册表的数据库中,其中包含了每个计算机用户的配置文件,以及有关系统硬件、已安装的程序和属性设置等信息,Windows 2000 在运行过程中要一直引用这些信息。注册表是以二进制形式存储在硬盘上,错误地编辑注册表可能会严重损坏系统。所以,在更改注册表之前,强烈建议备份注册表信息。为了防止在修改注册表的时候发生致命错误,有必要了解一下注册表文件的备份和恢复方法。除此之外,为了研究注册表的结构,还可以将注册表中的某一主键或子键保存为文本文件,或者打印出来,这项工作同样需要了解注册表文件的导入与导出方法。
一、Windows 2000 与Windows98的注册表的比较
大家也许对Windows98的注册表很熟悉,但是Windows2000毕竟和Windows98不同。本文将以Windows 2000 Professional版本为例,向大家介绍一下Winsows2000的注册表。
首先要运行注册表编辑器。你可以选择菜单"开始/运行",在弹出的运行对话框中输入"regedit",再单击"确定"按钮来启动类似于Windows 9X的注册表编辑器(如图1)。可以看到,它的内容和Win98相比,去掉了HKEY_DYN_DATA根键。只有KEY_LOCAL_MACHINE、HKEY_CLASSES_ROOT、HKEY_CURRENT_CONFIG、HKEY_USERS、HKEY_CURRENT_USER五个根键。它比Windows 9X下的注册表编辑器增加了许多功能。首先,在右边窗口的键值详细列表中增加了类型列,使我们可以很直观地了解键值的类型,如:如REG_SZ为字符串值,REG_DWORD为DWORD值,REG_BINARY为二进制值等;其次,在菜单栏中增加了类似IE的收藏菜单,提供了收藏夹功能,它可以方便你快速定位到需要经常修改的主键位置;第三,它还提供了记忆功能,即每次当你打开它时,左边窗口中的树形主键分支会自动展开,把焦点定位到你最近一次修改过的位置。
除了上述类似于Windows 9X的注册表编辑器外,Windows 2000还提供了一个新版的注册表编辑器(注意:下面我们介绍的注册表修改都是在其中进行),位置在D:\WINNT\system32\regedt32.exe(假设D为Windows 2000的安装盘符),运行它,主界面如图2所示。
这个新版注册表编辑器除了具备原来Windows 9X注册表编辑器全部功能外,最重要的是增加了"安全"菜单,也就是说,管理员可以给注册表项指派"权限",这一功能在NT中早就采用了,但在面向单机的操作系统中还是首次提供。这使得注册表的安全性大大提高。下面以允许用户访问"控制面板"注册表项但不保存对它的任何修改为例,介绍一下如何指派"权限"。首先在[HKEY_CURRENT_USER]窗口单击"Control Panel"主键,然后选择"安全"菜单中的"权限",在"Control Panel的权限"对话框中选择用户,再选中"读取"右边的"允许"复选框,最后单击"确定"即可(如图3)。
该注册表编辑器拥有多个子窗口(如图4),每个子窗口代表本地计算机上的一个预定义项(即五大根键)。这个注册表编辑器不仅可以显示编辑本地计算机的注册表项,还可以访问远程计算机的注册表,当访问远程计算机的注册表时,只可使用两个预定义项[HKEY_USERS]和[HKEY_LOCAL_MACHINE]。
下面简要说明一下这些预定义项的含义:
(一)、KEY_LOCAL_MACHINE
HKEY_LOCAL_MACHINE根键中存放的是用来控制系统和软件的设置。由于这些设置是针对那些使用Windows系统的用户而设置的,是一个公共配置信息,所以它与具体用户无关。该根键下面包含了五个子键:
1.HARDWARE子键
该子键包含了系统使用的浮点处理器、串口等有关信息。在它下面存放一些有关超文本终端、数字协处理器和串口等信息。HARDWARE子键又包括三个子键:
★DESCRIPTION:用于存放有关系统信息;
★DEVICEMAP:用于存放设备映像;
★RESOURCEMAP;
2.SAM子键
该子键已经被系统保护起来,我们不可能看到里面的内容。
3.SECURITY子键
该子键位于HKEY_LOCAL_MACHINE\Security分支上,该分支只是为将来的高级功能而预留的。
4.SOFTWARE子键
该子键中保留的是所有已安装的32位应用程序的信息。各个程序的控制信息分别安装在相应的子键中。由于不同的机器安装的应用程序互不相同,因此这个子键下面的子键信息会有很大的差异。
5.SYSTEM子键
该子键存放的是启动时所使用的信息和修复系统时所需的信息,其中包括各个驱动程序的描述信息和配置信息等。System子键下面有一个CurrentControlSet子键,系统在这个子键下保存了当前的驱动程序控制集的信息。
(二)、HKEY_CLASSES_ROOT根键
在Windows 2000中对HKEY_CLASSES_ROOT主键做了改进。HKEY_CLASSES_ROOT主键与当前注册使用的用户有关,它实际上是HKEY_CURRENT_USER\SOFTWARE\Classes和HKEY_LOCAL_MACHINE\SOFTWARE\ Classes的交集。如果两者的内容有冲突,则HKEY_CURRENT_USER\SOFTWARE\Classes优先。这个新特性在Windows 2000中叫做“单用户类注册”(per-user class registration)。单用户类注册有如下好处:
1.同一台计算机上的不同用户可以分别定制不同的Windows 2000
例如,用户甲安装了ACDSee图形软件,将BMP文件与ACDSee图形软件建立关联。而用户乙安装了PhotoShop图形软件,将BMP文件与PhotoShop图形软件建立关联,当用户乙双击BMP文件时,会自动调用PhotoShop图形软件,而不会调用用户甲安装的ACDSee图形软件。
2.提高了注册表的安全性
使用单用户类注册,各个用户有自己的HKEY_CLASSES_ROOT,不再需要通过修改HKEY_LOCAL_MACGINE/SOFTWARE/classes来满足自己的需求,这样系统管理员可以提高HKEY_LOCAL_MACGINE/SOFTWARE/classes的权限,禁止普通用户修改它,而各个用户之间更是不能修改对方的HKEY_CLASSES_ROOT。
3.支持漫游类注册
在Windows 2000中,提供了一个叫做IntelliMirror的功能。通过在服务器和客户端同时使用IntelliMirror,用户的数据、应用程序和设置在所有的环境中都可以跟随用户漫游,这当然包括了用户的配置文件。当用户登录到域中任意一台运行Windows 2000的计算机时,首先要通过目录服务中的身份验证,身份验证通过后,保存在服务器上的用户配置文件(包括注册表中的HKEY_CLASSES_ROOT)将复制到该计算机上,好像用户在本地计算机登录一样。HKEY_CLASSES_ROOT根键中记录的是Windows操作系统中所有数据文件的信息,主要记录不同文件的文件名后缀和与之对应的应用程序。当用户双击一个文档时,系统可以通过这些信息启动相应的应用程序。HKEY_CLASSES_ROOT根键中存放的信息与HKEY_LOCAL_MACHINE\Software\Classes分支中存放的信息是一致的。
HKEY_CLASSES_ROOT根键由多个子键组成,具体可分为两种:一种是已经注册的各类文件的扩展名,一种是各种文件类型的有关信息。
(三)、HKEY_CURRENT_CONFIG根键
如果你在Windows中设置了两套或者两套以上的硬件配置文件(Hardware Configuration file),则在系统启动时将会让用户选择使用哪套配置文件。而HKEY_CURRENT_CONFIG根键中存放的正是当前配置文件的所有信息。
(四)、HKEY_USERS根键
HKEY_USERS根键中保存的是默认用户(.DEFAULT)、当前登录用户与软件(Software)的信息。它的下面有三个子键:.DEFAULT子键、S-1-5-21-1229272821-436374067-1060284298-1000和S-1-5-21-1229272821-436374069-1060284298-1000_Classes三个子键,其中最重要的是.DEFAULT子键。
.DEFAULT子键的配置是针对未来将会被创建的新用户的。新用户根据默认用户的配置信息来生成自己的配置文件,该配置文件包括环境、屏幕、声音等多种信息。
(五)、HKEY_CURRENT_USER根键
HKEY_CURRENT_USER根键中保存的信息(当前用户的子键信息)与HKEY_USERS\.Default分支中所保存的信息是相同的。任何对HKEY_CURRENT_USER根键中的信息的修改都会导致对HKEY_USERS\.Default中子键信息的修改,反之也是如此。
二、Windows 2000的用户配置文件
默认情况下,大多数配置单元文件(DEFAULT、SAM、SECURITY、SOFTWARE 和 SYSTEM)均存储在%SystemRoot%\System32\Config文件夹中。而每个计算机用户的用户配置文件信息(包括Ntuser.dat 和Ntuser.dat.log)的位置,取决于Windows 2000是全新安装还是从Windows 95/98 或Windows NT升级安装。在全新安装以及从Windows 95/98升级安装的情况下,Ntuser.dat 和Ntuser.dat.log文件存储在%SystemDrive%\Documents and Settings\username文件夹中。在从Windows NT升级的安装中,Ntuser.dat 和Ntuser.dat.log文件存储在%SystemRroot%\Profiles\username文件夹中。
Windows 2000注册表中的每个配置单元均与一组标准文件相关联。如图5显示运行 Windows 2000 的计算机的标准配置单元和文件。
由于注册表是树形结构的,所以可以将注册表里的内容形象地描述为树枝和树叶。树枝下可以有多个树枝,也可以有多个树叶。这个树枝,我们把它叫做“项”,树叶呢,叫做“值项”。值项包括三部分:值的名称、值的数据类型以及值本身。