从零讲起 彻底走出注册表应用的迷雾( 二 )


三个疑问让你认清注册表的真面目
1.为什么一定要使用注册表
或许你会问,注册表既复杂,修改不当又容易引发系统故障,而Dos或早期的Windows没有注册表却也能正常工作,那么现在的Windows一定需要注册表呢?
DOS是一个纯命令操作平台,没有图形界面,一切输入均通过命令的方式来解决 。要打开文本文件1.txt需要输入“edit 1.txt”命令才行,也就是说“要打开什么文件”,“用什么程序打开此文件”这些问题都必须由你来告诉计算机 。而现在的Windows系统中,要打开1.txt的属性只需在“资源管理器”双击此文件即可,你只要指定要打开的文件,计算机就会根据你要打开的文件类型自动选择合适的应用程序进行操作,这种智能的打开方法就是由注册表中保存的“文件关联”数据(出了“文件关联”外,注册表还存放了其他很多重要的设置数据) 。这种发展是由计算机的复杂性决定,在DOS时代可能无需这种机制,但如果现在Windows没有“文件关联”,那成千上万种文件类型一定会让你看眼花 。
2.注册表的“妈妈”是谁
Windows设计之初,并没有采用注册表这种方式来存放软硬件配置信息,而是使用了两个扩展名为INI的文件(system.ini和win.ini) 。对于INI文件大家应该很熟悉了,很多“绿色软件”都声称其不在注册表中写入任何数据,但大多会在其安装目录下留下一个或几个INI文件 。既然当初使用的是INI,为什么后来又改成注册表了呢?这是因为INI文件有一个致命的弱点就是大小不能超过64KB,随着软硬件功能的日益进步,其所需的配置数据体积也在不断膨胀,INI文件早已无法满足这种数据量的要求了 。另外INI其实是依据某种定义规范的文本文件,编辑过程极易出错并由此导致系统故障,为了克服这些问题,在Windows 95及其后的版本中,Window系统都无一例外的采用了注册表机制,并将原来由多个INI组成的软硬件配置信息统一到了一起,形成一个数据库,那就是注册表 。
3.注册表的家在哪里
既然注册表是一个数据库,那么这个数据库文件在那里呢?其实,难怪不少刚接触电脑的朋友误以为regedit.exe就是注册表,这是由于对注册表数据库的组成不清楚而造成的 。Windows 98注册表的数据文件主要由System.dat和User.dat这两个文件组成,并保存在C:Windows目录下,其中System.dat存储的是系统和硬件相关的配置,而User.dat则保存软件配置和用户配置,Windows 2000/XP注册表的数据文件主要存储在%Windir%System32config目录中的Default,Sam,Security,System,software和Userdiff等6个文件中,除此之外,还有部分数据保存在用户的配置文件目录中,比如Window 2000/XP中的Administrator的部分注册表数据就保存在C:Documents and SettingsAdministrator目录的Ntuser.dat文件中,所以只需要Administrator登陆系统后其目录下的NTUSER.DAT就不能被删除,因为它已经被加载到注册表中了 。
两个知识点理清错综复杂的注册表脉络
1.查查注册表元素的身份证
运行regedit.exe打开“注册表编辑器”,就能在其左侧看到注册表的分支结构,其中以文件夹方式表示的称为“键”,而在选中一个键后在窗口右侧显示的则称为“项” 。在网上搜索到的修改教程中经常会提到“根键”,“主键”,“子键”,“键值项”,是什么意思呢?
①根键(Root Key)是指在注册表编辑器左侧以“HKEY”作为名称前缀的位置,因其位于注册表最项层被称为根键,如Windows XP的注册表中包括五大根键,分别为HKEY_CLASSES_ROOT,HKEY_CURRENT_USER,HKEY_LOCAL_MacHINE,HKEY_USERS和HKEY_CURRENT_CONFIG 。这些根键都可所写的,譬如HKEY_CLASSES_ROOT就可以简写为HKCR,其它的则以此类推 。

推荐阅读