认识Windows XP注册表及注册表实战案例
2008-12-11 10:35:31 来源:WEB开发网1.概述
Windows xp注册表实际上是一个庞大的数据库,这个数据库记录了机器软硬件环境的各种信息,对操作系统及应用程序的正常运行至关重要。具体来讲,此数据库包含了Windows系统和应用程序的初始化信息、应用程序和文档文件的关联、硬件设备的说明、状态和属性等数据,操作系统和应用程序会对此数据库进行频繁存取,以保存和获取必要的数据。
注册表中的不少数据可直接通过操作系统及应用软件提供的界面来变更。笔者认为对注册表数据直接修改的意义主要有二:一是快捷,可以绕过不少复杂的操作;二是可以对操作系统、应用软件不提供修改途径的数据进行变更,以实现特殊目的。这里要说明的是,由于Windows XP是严格的多用户操作系统,在进行注册表操作时,应以管理组(Administrators)成员身份进入。
在Windows 9X中,注册表的数据文件存放在系统盘的Windows目录下(user.dat和system.dat)。而在Windows XP中,绝大部分数据文件存放在“%SystemRoot%\system32\config”文件夹下(“%SystemRoot%”是文件夹system32所在位置,如“c:\windows”)。该目录里面包含了5个没有扩展名的文件,即当前注册表文件:
DEFAULT(默认注册表文件,位于注册表的HKEY_USERS项分支下)
SAM(安全账户管理器注册表文件,位于注册表的HKEY_LOCAL_MACHINE\SAM项分支下)
SECURITY(安全注册表文件,位于注册表的HKEY_LOCAL_MACHINE\SECURITY项分支下)
SOFTWARE(应用软件注册表文件,位于注册表的HKEY_LOCAL_MACHINE\SOFTWARE项分支下)
SYSTEM(系统注册表文件,位于注册表的HKEY_LOCAL_MACHINE\SYSTEM项分支下)
Windows XP会将系统初装后的注册表文件备份到“%SystemRoot%\Repair”目录下,以便系统出现故障时能用此备份文件修复(具体使用方法请参见后文)。
2.Windows XP注册表编辑器
Windows提供一个编辑注册表文件的编辑器,单击“开始”→“运行”,输入“regedit”回车后即可进入。注册表编辑器的界面类似于资源管理器,其中涉及到一些名词术语,以下介绍我们将统一采用Windows XP中文版帮助文件中的命名。
编辑
器左栏是树形目录结构,共有5个根目录,称为子树,各子树以字符串“HKEY_”为前缀(分别为HKEY_CLASSES_ROOT,HKEY_LOCAL_MACHINE,HKEY_USERS,HKEY_CURRENT_USER,HKEY_CURRENT_CONFIG);子树下依次为项、子项和活动子项,活动子项对应右栏中的值项,值项包括3部分:名称、数据类型、值。
在Windows XP注册表编辑器中可直接修改、添加和删除项、子项与值项,并且可利用查找命令快速查找各子项和值项:
(1)设置权限:在多用户情况下,可设置注册表的某个分支不能被指定用户访问,方法是选择要处理的项,并选择菜单“编辑”→“权限”,然后在对话框中设置相应权限。但这里要注意,设置访问权限意味着该用户其进入系统后运行的任何程序均不能访问此注册表项,不熟悉的用户请慎用此功能。
(2)查找:选择菜单“编辑”→“查找”(或按“Ctrl+F”),在弹出的“查找”窗口中“√”选要查找目标的类型,并输入待查找内容,单击“查找下一个”按钮,等待片刻便能看到结果,之后按“F3”键可查找下一个相同目标。
(3)收藏:有些注册表项经常需要修改,这时可将此项添加到“收藏夹”中。选择注册表项,单击“收藏”→“添加收藏夹”,输入名称并确定后该注册表项便添加到了“收藏”列表中,以后访问时可直接从“收藏夹”点选进入。查找和收藏是注册表编辑器的重要功能,应多加以利用。
(4)添加子项或值项:在左窗格中选择要在其下添加新项的注册表项,然后在右窗格中单击鼠标右键,选择“新
建”→“项”或值项数据类型。
(5)更改值项:右键单击要更改的值项,选择“修改”,然后输入新数据并“确定”即可。实际上,如要删除、重命名子项、值项,只须选择相应对象,单击右键,进行相应操作即可。
(6)注册表项的“导出”和“导入”:建议在修改注册表时,如果没有把握,请将修改项先导出以备修改错误时再导入恢复。选择要导出的注册表项,单击“文件”→“导出”,“保存类型”一般选择“*.reg”,输入文件名后单击“保存”即可。要导入已备份的注册表项只须单击“文件”→“导入”,并选择准备导入的文件,若是上一步导出时存为.reg文件,导入时直接双击此文件即可完成任务。
3.备份注册表
为了在注册表损坏后能及时修复,有必要对其进行备份。用Windows XP自带的备份工具就可完成此工作:单击“开始”→“所有程序”→“附件”→“系统工具”→“备份”,取消向导模式调出“备份工具”对话框,点选“备份”标签,再“√”选其中的“System State(系统状态)”项,点选左下角的“浏览”可选择存储备份文件的位置。最后点击“开始备份”,系统便开始备份文件了。需要注意的是这样的备份是连带系统文件一同备份,虽然耗时多,但非常安全(后面会讲到),且操作简便。如果你仅对注册表信息备份,那么将上文中提到的5个注册表数据文件备份即可。
探索Windows XP注册表
Windows XP注册表中除前面提到的5大子树,其实还有一个隐藏的性能子树HKEY_PERFOR MANCE_DATA,包含了Windows XP一些性能工具和性能数据之间的信息;但在注册表编辑器中无法看到此子树内容,只能通过编程方式访问,因此本文就不作介绍了。
在Windows XP注册表中,HKEY_CURRENT_CONFIG子树的信息较少,也不是很有用,这里予以跳过。HKEY_CLASSES_ROOT下的信息和HKEY_LOCAL_MACHINE\SOFTWARE\Classes下的信息相同,只要一处更改,另一处便自动更改。HKEY_USERS子树很有用,特别是.DEFAULT项,保存的是默认用户的软件设置,如果要限制新建立用户的软件设置,则可在此修改;当前用户由于已被创建,修改此子树对其已无效,而应当通过HKEY_CURRENT_USER来达到修改目的。这样我们关注的注册表内容其实就集中在HKEY_LOCAL_MACHINE、HKEY_CURRENT_USER两大子树下,后面将对这两大子树进行深入探索,所举之例都是与大家关系密切的,其本身的意义固然不小,但我们更希望大家细细分析这些实例,并得出规律性的结论,以达到举一反三的效果。
1.HKEY_LOCAL_MACHINE子树详解
该子树主要存储Windows XP的系统信息,常用到SOFTWARE和SYSTEM两个子项。
(1)HKEY_LOCAL_MACHINE\SOFTWARE
该项下的数据存储了应用和系统软件的有关信息,只要涉及到具体软件方面的修改都应进入此注册表项。
①HKEY_LOCAL_MACHINE\SOFTWARE\Classes
该项存储了不同文件类型的打开程序及已注册程序的相关信息。关于文件用什么软件打开、播放等修改操作都应进入此项。
实例:更改AVI文件的默认打开程序
首先来分析一下AVI文件打开程序的存储位置。在注册表编辑器中(以下除非特别说明,都是在注册表编辑器中)展开上述Classes项下的.avi,发现左窗格中“默认”值项的数据是“AVIFile”,于是找到同一Classes项下的AVIFile,展开其下的shell\open\command,发现其默认值指向Windows Media Player),即AVI文件用WMP默认播放。因此修改其默认打开程序有两种方法:一种是把上述command项下的默认值改为指定程序,如笔者硬盘上的“D:\Winamp2经典\Winamp.exe”,但上述方法的结果之一是AVI文件的显示图标仍然是原来的Media Player样式;也可修改上述.avi项中的默认值,使其指向Winamp2的注册位置,于是仍在上述Classes项下寻找,果然发现有Winamp.File子项,因此将.avi项中的默认值改为“Winamp.File”,果然一击奏效,图标也随着改变了。如果你发现这两个修改方法均对打开程序不起作用,没关系,这是因为HKEY_CURRENT_USER中对AVI扩展名信息进行了覆盖,看到后面的内容你就明白了。
巩固:要禁止CD光盘自动运行,只需展开上述Classes项下的AudioCD\shell子项,在右边窗格中将“默认”值项设为空“ ”(即输入空格)。
②HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID
该子项存储有关类ID(CLaSs ID)分配的信息,Windows XP中几乎所有支持OLE的应用程序都有一个合法的类ID。这个子项对于程序员的意义很大,对于普通用户,则可用来修改特定图标的提示信息。这个子项比较常用,建议大家收藏,以方便使用。
实例:修改“回收站”的提示信息
上面所说的特定图标包括HKEY_CURRENT_USER\Software\ Microsoft\Windows\CurrentVersion\Explorer\CLSID下的5个图标,分别代表网上邻居、我的电脑、我的文档、回收站和IE浏览器。由图可知“回收站”的CLSID值为{645FF040-5081-101B-9F08-00AA002F954E},在HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID子项下查找此字串,找到后将右边窗格中修改字符串InfoTip的值为你想要的提示信息,如“电子垃圾轮回之所”。在这里也有DefaultIcon(默认图标)子项,但因HKEY_CURRENT_USER对此也进行了覆盖(其实就是上面提到HKEY_CURRENT_USER\…\下的CLSID子项),所以改过后并没有任何作用。
巩固:修改控制面板中“任务栏和‘开始’菜单”的默认图标,查找CLSID下的{0DF44EAA-FF21-4412-828E-260A8728E7F1}
更多精彩
赞助商链接