如题所述
注册表(Registry,繁体中文版Windows操作系统称之为登录档)是Microsoft Windows中的一个重要的数据库,用于存储系统和应用程序的设置信息。早在Windows 3.0推出OLE技术的时候,注册表就已经出现。随后推出的Windows NT是第一个从系统级别广泛使用注册表的操作系统。但是,从Microsoft Windows 95操作系统开始,注册表才真正成为Windows用户经常接触的内容,并在其后的操作系统中继续沿用。
温馨提示:答案为网友推荐,仅供参考
第1个回答 2007-02-03
Windows 95开始,微软公司在Windows中引入了注册表(英文为REGISTRY)的概念(实际上原来在Windows NT中已经有此概念)。注册表是Windows95及Windows98的核心数据库,表中存放着各种参数,直接控制着Windows的启动、硬件驱动程序的装载以及一些 Windows应用程序运行的正常与否,如果该注册表由于某种原因受到了破坏,轻者使 Windows的启动过程出现异常,重者可能会导致整个 Windows系统的完全瘫痪。因此,正确地认识、使用、特别是及时备份以及有问题时恢复注册表,对 Windows用户来说就显得非常重要了。可以这么说,只要你发现了registry 的秘密,你就几乎可以完全控制Windows了!
一、WINDOWS98注册表概述
关于 Windows98注册表,我们知道 Windows3.X系统是以扩展名为.ini的配置文件来保存系统及应用程序的各种初始化配置信息的。每当 Windows3.x启动时,系统都会从两个最重要的.ini文件即从Win.ini和System.ini中读取各种初始化信息来对整个系统的软硬件环境进行配置,从而正常启动整个Windows系统。一般来说,Win.ini文件中主要包含着控制 Windows用户窗口环境的信息(如各硬件的驱动程序等),我们可以利用文本编辑器通过修改这两个文件来调整一些软硬件的配置以适应自己的需要。从 Windows95开始,原来保存在以上两个初始化文件中的有关信息,都被移到了系统的注册表中,这样注册表就成了 Windows系统关键信息的集中存放地,而原来的System.ini和Win.ini 两个初始化配置文件,则因 Windows系统还需兼容老的16位 Windows应用程序而仍然在 Windows95及 Windows98中保留着。
那么,Windows98的注册表到底是个什么东西,里面又有那些内容呢?
Registry是一个被分为6个主要分支的数据库(如图1)
图1
它的每一个分支都是一个句柄,并以六组不同的关键字值来区分,它们分别为:HKEY_CLASSES_ROOT、HKEY_CURRENT_USER、HKEY_LOCAL_MACHINE、HKEY_USER、HKEY_CURRENT_CONFIG、HKEY_DYN_DATA,每个分支又进一步被分解成更细的分支。事实上,REGISTRY中的许多东西对于用户和系统管理员来说用处不大,但是研究发现直接编辑HKEY_CLASSES_ROOT和HKEY_CURRENT_USER会带给我们很多的欣喜,当然我们也发现更改其他分支的设置同样能为用户提供有用的东西。下面我们就来简单的认识一下注册表的六个分支吧!
1、HKEY_CLASSER_ROOT。该份之下至少包括100个关键字,这个分支下主要包括OLE数据,还包括文件扩展名和文件或应用程序的关联,改变改分支中的数据结构和内容将直接影响到系统软件的应用,此下的信息都被保存在system.dat文件中。
2、HKEY_USER。在这个关键字下显示的信息都保存在User.dat文件中,这包含了与具体用户有关的desktop(桌面)配置、网络连接以及start菜单。如果用户的计算机被配置为使用户的配置文件,那么系统就会为每个用户都创建一个单独的User.dat文件。当一个用户登录到计算机上时,Windows98将读取那个用户的user.dat文件,并把该文件放入内存中的Registry中。
3、HKEY_CURRENT_USER。它是适用于当前用户的HKEY_ USER部分。如果只有一个用户,即确省用户,那么HKEY_USER\.Default和HKEY_CURRENT_USER是相同信息的不同的显示方式。
4、HKEY_LOCAL_MACHINE。这是针对计算机硬件以及安装的软件所设定的分支。如果计算机有多个硬件配置,那么每个配置的信息都保存在这里。如果你察看一下该分支下的SOFTWARE下面的信息,你会发现生产已安装软件的公司的名字都在这儿了,这个分支为关于每个公司产品的与具体机器有关的信息存放提供一个方便的地方。在这儿,你还可以发现应用程序名字、版本数、应用程序路径名以及以及硬件设置。Microsoft也使用这个分支注册它的软件。
5、HKEY_CURRENT_CONFIGURATION。在这里用户可以找到显示设置情况和使用的打印机。
6、HKEY_DYN_DATA。这里保存了Windows操作性能参数的数据,当Windows98加载后,该信息被保留在RAM中,同时被不断更新。
在Windows98注册表文件中,事实上只有两个隐藏的只读文件System.dat和User.dat组成了Registry,由于这两个文件是二进制的文件,不易被一般的字处理文件所编辑。处理这两个文件,一是采用Registry editor直接来编辑它(如图1),也可以用Registry editor将它们导出来成为一个文本文件即可。
System.dat把一台计算机以及计算机上软件的具体信息保存起来。它不但追踪Windows和其他的安放其信息于Registry中的已安装信息,而且也追踪已发现的硬件以及其配置。
User.dat保存与用户相关的信息,包括鼠标、颜色方案、光标方案、墙纸、访问性设置、图标间隔、字体、键盘布局、键盘延迟和速度、区域设置、浏览器设置以及密码等等。一个用户的桌面图标和网络连接,它们都保存在User.dat文件中。
二、注册表的备份和恢复
由于注册表内存放了计算机许多重要的信息,其功能也十分强大,我们可以通过编辑注册表来实现很多常规方法难于实现的功能。也正因为注册表是各种关键住处的集中存放地,所以如果编辑不当,就会造成一些难于预料的后果,因此在对注册表进行编辑之前,备份和回复注册表的信息非常重要。
大家知道,注册表是由System.dat和User.dat两个具有只读隐藏属性的文件所组成的。在 Windows95里,注册表保存在 Windows目录下的,可以由运行 Windows目录下的注册表编辑器(Regedit.exe)来打开及进行编辑。 Windows95每次开机时,均会自动在这两个文件所在的同一目录下以System.dao和User.dao之名(均为只读隐藏文件)为这一注册表备份,以便为注册表的恢复之用。要特别指出的是:System.dao和User.dao在系统重新再启动后,实际上已用原注册表文件作为蓝本进行了覆盖备份,所以这时的备份文件从严格意义上来说已无备份恢复之价值了。那么在 Windows98中又是什么样子呢?下面笔者就根据自己的使用体会和有关资料,来谈谈在 Windows98中如何对注册表进行备份及恢复的几种方法。
(一)、直接进行备份及恢复。
这是一种很原始的方法,即直接将所需之System.dat及User.dat两个文件拷贝存放在硬盘某个指定目录下或直接拷到软盘上作为备份,恢复时再将该备份替换覆盖回原处即可,当然在备份及恢复时都需对这两个文件的只读及隐藏属性进行相应的修改操作。需注意的是:一般情况下由于Windows98的注册表(包括System.dat和User.dat两个文件)往往有近2M甚至更大,用一般1.44M的3寸软盘来存储备份是放不下的,所以必须利用压缩软件将其压缩后才能放入1.44M软盘中。当需要恢复时,还需要用解压缩软件将其解开后再放入 Windows目录下替换覆盖原注册表数据。
用这种方法的好处是如因注册表问题而导致系统瘫痪,开机后无法进行 Windows系统时,可用应急启动盘进入 Windows98自带的DOS7.1界面后,用常规的DOS操作来将存在硬盘或通过解压缩软件将软盘中的备份覆盖回原处,恢复原备份时注册表的正常数据。
(二)、利用Regedit注册表编辑器自带的导出及引入功能备份和回复。
运行Regedit.exe打开 Windows98注册表后,利用“注册表”的“导出”及“引入”功能也可以用来备份或恢复注册表信息。具体方法如下:
1、打开如图2的左上角“注册表”下拉菜单,点击“导出注册表文件”项。
图2
2、在出现的“导出注表文件”对话框中,键入欲备份注册表的文件名及其保存位置,再按“保存”按钮即可(如图3)。
图3
若需恢复注册表时,用同样的方法打开注册表编辑器,打开“注册表”下拉菜单后点击“引入注册表文件”项,在出现的对话框中选中所需恢复的备份文件,再按“打开”按钮即可将该注册表备份恢复回 Windows系统了。
该方法主要适合于Windows系统还未瘫痪或能用启动时按F8键的方法,选择安全模式启动Windows98系统时恢复注册表之用,如因注册表问题而连 Windows系统都进入不了时,则该法就无法应用了。此外因备份无法压缩而其大小又超过1.44M软盘容量,所以应用该法也只能将备份保存在硬盘里了。
(三)、 Windows98的自动备份注册表。
Windows98在每次开机是都会自动地备份Registry文件和Win.ini、System.ini文件,Win98的自动备份注册表功能取消了在Win95中每次开机时自动以System.dao 和User.dao为名的两个文件来备份注册表数据的功能,而新增加了一个以Cab(Cabinet)作后缀的压缩文件作为注册表备份的功能。具体使用如下:
1、备份。如果你在启动程序组里添置了Scanreg.exe文件, Windows98系统自动完成注册表的备份。在用户当天第一次开机时, Windows98将会自动将系统中原有的注表信息,包括System.dat 和User.dat,也包括了System.ini和 Win.ini这四个文件都压缩成Cab形式的文件,以rb001.cab、rb002.cab 等等名字的Cabinet文件存放在 Windows\Sysbckup目录下,系统自动保存最近5开机天(注意不是5天)的注册表数据,超过5开机天时则自动挤掉最早日期的备份文件。执行该命令的是Windows98自带的Scanregw.exe文件,也可以在纯DOS模式下执行纯DOS模式文件Scanreg.exe。
如果用户想在使用Windows98的同时,来创建Registry的一个备份,那么运行Scanreg.exe,Scanreg会扫描系统注册表,如果未发现系统注册表任何错误,它将告诉用户它已在当天备份了注册表,并询问是否想现在备份?(如图4)
图4
用户还可以自由的决定Windows98在开机时是否调用Scanreg文件,这只要在系统的程序组里选中不选Sanreg文件即可。用户也可以决定保存多少天的备份,决定保存的地点,以及决定同备份文件一起保存的其他文件,用户可以在\windows\下的scanreg.ini文件中设置、修改这些参数。
2、恢复:可以用 Windows自带的Extract.exe(在 Windows\command目录下)解开该压缩文件恢复替换回原注册表文件即可,也可用其他第三方解压缩程序如 Winziop7.0等解开所需之rb001.cab等备份压缩文件覆盖回去。当然,也可以进入实模式DOS状态,运行Scanreg.exe文件恢复备份的注册表。步骤如下:
1).单击“开始”,再单击“关闭系统”;
2).单击“重新启动计算机并切换到MS-DOS方式”,然后单击“是”;
3).进入Windows目录下。例如,如果你的Windows安装在C:\Windows目录下,应键入以下内容CD C:\WINDOWS后回车;
4).在MS-DOS模式下键入C:\WINDOWS\COMMAND\SCANREG/RESTORE后回车。
按照上述步骤,可以将注册表恢复到最后一次启动计算机时的状态。
三、自带的注册表编辑器-Registry Editor的使用
事实上,Microsoft已经创建了多个用户界面如“控制面般”、“打印机”等等对话框,使用他们可不必直接编辑注册表来改变Registry内的参数值。也许,微软公司提供的这些界面窗口对于一般用户来说是足够了,可对于想深入了解Windows98的用户,这就远远不够了!这时候,Windows98提供的注册表编辑器“Registry Editor”就可以帮助你实现你的希望了!
使用Windows98提供的用户界面来改变Registry的值是最安全的方法,而使用注册表编辑器时,可能会改变或删除注册表的关键元素,甚至会导致系统运行的不正常!因此在使用注册表编辑器之前,最好现备份一次注册表信息!
(一)启动注册表编辑器。
用户可以在\windows下找到Registry editor,选中后双击它,即可启动注册表编辑器(如图1)。也可以在开始菜单下选择运行命令,在命令窗口中输入“Regedit”也可以启动它。Windows98 setup 没有把它放在一个Start菜单上。
(二)、Registry editor的基本操作
下面我们来看看注册表编辑器的一些基本操作命令。这里我以使用当前的Desktop作为理想的位置的操作举个例子来说明一下。
1、首先单击HKEY_CURRENT_USER左边的加号。单击control panl(控制面板)左边的加号,然后单击desktop旁边的加号,选中Windows Metrics选项。这时,会在右边的窗口中充满了常量和数值(如图5)。
2、右击编辑器的右边的窗格,会弹出一个窗口(如图5),
图5
我们可以选择它来创建一个主键、一个字符串值、一个二进制值或者一个DWORD 值。关键字和任意一个常量都可以连接在WindowsMetrics上。
3、右击Registry左边窗口的desktop关键字,会弹出如图6的窗口。在这里,用户可以合并注册表已扩展的分支,创建一个新的关键字、字符串值、或二进制值,查找文本或数值字符串,或者删除、重命名该关键字等等操作。
4、右击编辑器的右边的窗口中的关键字名,将会显示一个上下文菜单,它允许用户调整该常量的值,或者删除该常量及其它的值以及重命名的命令。
图6
(三)、导入导出注册表信息
如前面讲过,在备份注册表信息时可以用这册表编辑器将这册表信息导出到一个带有reg扩展名的ASCII文件中。用户可以导出整个注册表,前面已经讲过这种使用方法。用户也可以导出注册表的一个分支,只要在导出之前,选中注册表左边的窗格的该分支即可。
在导出时,编辑器会自动给导出文件一个扩展名.reg,这个文件时可以被写字板编辑的一个文件。如图7就是导出的 registry文件的一部分在写字板中显示的内容。
图7
1、查找编辑一个导出的Registry文件。
导出一个注册表文件的一个目的就是编辑查找信息。在注册表编辑器里也可以编辑和查找,但是它的功能弱,速度慢,远远没有写字板的功能强。
在注册表编辑器里,只允许用户在关键字区域、常量名区域或值的区域内键入特定类型的值。而Wordpad的功能十分强大,如果想对注册表进行大量的更改,那么导出注册表再编辑是个好方法。当然如果用户编辑导出的注册表文件时会犯些错误,而这些错误在注册表编辑器里就会得到避免!
2、把一个文本文件导入或合并到注册表里。
如果你已编辑了导出的注册表文件,那么只要按照上面的所讲的恢复备份操作,就可以把它放回原处。同样,如果用户创建了一个这样的文本文件,它带有正确格式的关键字、常量名、数据值,用户也可以把它导入到注册表文件中。
3、改变导出文件的缺省行为。
如果你已经导出了一个注册表文件,你会发现这个文件的标示是 的注册表文件格式,也就是说它的缺省行为是“合并”。如果你单击它,执行的一个合并命令。用户也可以改变该文件的缺省行为,使其变成编辑命令,以避免用户的误操作使得不该合并的文件合并回去了。
(1)、打开任意一个浏览器窗口,如打开“我的文档”窗口。选择“查看”下的“文件夹选项”菜单,然后单击“文件类型”如图8。
图8
(2)、选中“注册表”项目,比单击“编辑”按钮,弹出图9的窗口。选中“编辑(E)”,并单击“设为默认值(S)”。
图9
(3)、单击“关闭”即可。
这时,你再单击.reg的注册表文件时,它的缺省行为变成了编辑状态,这与Windows 98界面其他部分保持了一致。
三、注册表使用实例
下面介绍一些注册表使用的一些实例。
(一)、改变软件注册的主人
你是否注意过,一般在安装软件时,它会向你询问用户的名字和公司的名字,这些信息都被保存在注册表信息里。用户也可以改变这些设置。操作方法如下:
1、打开注册表编辑器。
2、定位到HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion.
3、右击右边窗口中的RegisteredOwner和/或RegisteredOrganization,并改变其名字即可。
4、退出注册表编辑器。
(二)、增加用户自己的提示
Windows98会为第一次使用的用户提供提示功能。同样用户自己也可以改变注册表来编辑来源与Microsoft的提示,并为其他的用户创建新的提示。步骤如下:
1、打开注册表编辑器。
2、定位到HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\explore\Tips。
3、键入比已有的提示数目最大数更大的数目。例如,Microsoft最后的一个数是47,那么用户就键入48。按Enter。
4、双击用户刚刚键入的那个数,键入一个新的提示,单击ok。
5、同样,用户也可以双击一个已有提示的相关联数目,用户也可以编辑它。
(三)、改变Windows 98各种输入法的顺序。
假如你已在系统里安装了多种汉字输入法,那么有没有碰到要连续按多次输入法切换键,才能找到所需输入法的情况?有没有办法能快速切换到所需的输入法?我想第一种方法就是重新安装某一汉字输入法,将最常用的输入法排在输入法列表的最前头。因为Windows98本身并不提供汉字输入法顺序的调整方法。第二种可以通过修改注册表来调整输入法的顺序、增加或删除输入法,甚至可做到Windows98启动后的缺省输入法为汉字而不是英文。
在注册表HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\keyboard layout\下存放着各中输入法对应的主键,其中E00E0804--微软拼音输入法、E00C0804--表形码输入法、E0050804--区位码输入法、 E0040804--智能ABC输入法、E0030804--郑码输入法、 E0020804--双拼输入法、E0010804--全拼输入法、 00000409--英文输入法。在HKEY_USERS\.DEFAULT\keyboard layout\preload\下则是系统所安装的输入法的主键及键值,其主键为自然数,键值为上表中各输入法对应的主键。如果系统已安装了“智能ABC”和“全拼”输入法,则可看到如下的主键和键值:1、00000409;2、E0040804;3、E0010804。改变输入法顺序,假设要将输入法顺序变为“全拼”、“智能ABC”和“英文”,可将主键和键值更改如下:1、E0010804;2、E0040804;3 00000409,这样就可以改变系统中输入法的顺序了。
(四)给Windows98换个名
如果要想在win 中所有关于"windows98"对话框中出现的不是windows98,而是取而代之的My windows或其它有意思的名字。那么,打开HKEY_LOCAL_MACHINE\SOFTWARE\MICROSOFT\Windows\Current Version,选中Version字串,双击将Windows98换成你希望的名字,而且无需启动,自动生效。
(五)通过"我的电脑"直接启动资源管理器
你想让“我的电脑”成为资源管理器吗?打开HKEY_CLASS_ROOT\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\Shell,右击Shell,建立新主键,出现"新键#1",改名为"Open",再在Open下建"Command"主键,方法同上。双击"Command"主键下的"默认"字符串,将其键值改为"explorer/ec:\"(其缺省打开路径为"c:\",要想改变,将"c:\"换为指定的路径名即可)。生效后双击"我的电脑"打开的就不再是"我的电脑"窗口,而是资源管理器了。如果你不想启动资源管理器,则将前一步输入的"explorer/ec:\"改为其他程序名。如"Regedit"。那么双击"我的电脑"打开的就是注册表编辑器了。
(六)、去掉桌面快捷方式图标上的箭头
如果你觉得Windows98快捷方式图标上的箭头碍眼,那么让可以修改注册表去掉它。打开注册表编辑器,在HKEY_LOCAL_MACHINE\Software\classes\lnkfile和HKEY_LOCAL_MACHINE\Software\classes\piffile两处的键值中都有一个"Isshortcut"的字符串值,删除它,重新启动计算机后,你就不会看到快捷图标上的箭头的。
(七)、删除"运行"和"查找"对话框中的文件名
�每次从"开始/运行或查找"中键入文件名,都会保存在相应的下拉菜单中,日积月累,增加查看的麻烦,并且对于安全来考虑,也需要清除它。打开HKEY_USER\Default\software下面的Microsoft\Windows\Current Version\Explorer\runMRU,在右窗口的"运行……"对话框删除不需要的文件名;打开HKEY_USER\Default\Software\Microsoft\Windows\Current Version\Explorer\DOCFind SpecMRU,在右窗口的"查找……"对话框删除不需要的文件名,重启动Windows后生效。
(八)、隐藏桌面的所有图标
有时出于某种特别的需要,我们必须隐藏桌面上的所有图标。首先打开出册表编辑器,选中HKEY_CURRENT_USER\Software\Micreosoft\Windows\Current version\Policies\Explore,右击右窗口空白处选"新建/DWORD",出现"新值 #1"改名为“Nodesktop”,双击将其键值改为1。恢复时只需将值改为0,或直接删除Nodesktop即可。如果更名为Nosavesetting,双击将其键值改为1,则会使桌面保持在第一次设置时的状态,即锁住桌面。如果更名为Noclose,双击将其键值改为1,则生效后开始菜单无"关闭系统菜单"选项。恢复法同上,重启动后生效。
(九)、给你的软件增添声音
可以通过注册表的改变来为单个应用程序增加一些声音。打开HKEY_CURRENT_USER\Appevents\Schems\Apps“Apps”下面的 ".Dfault"就是每种事件所要发出的声音,对"Apps"单击鼠标右键,选"新建"的"主键",输入应用程序的名字,不用扩展名。然后再右击你新建的主键,选"新建"的"主键",输入名字为"Open"。然后,到控制面板选"声音",能从列表中找到你的应用程序。启动计算机即生效。
(十)、一些修改桌面和屏幕设置的参数
打开注册表编辑器,在HKEY_CURRENT_USER\ControlPanel\desktop下可以看到一些项目介绍如下,改变这些项目就可以改变系统的一些功能,读者不妨一试,这里不再赘述:
1.HungAppTimeout:是指一个应用程序出错时试图等待响应的时间,单位为毫秒,缺省值为5000毫秒,可以减少为3000毫秒,以加快系统的响应能力。
2.MenuShowDelay:是指“开始”菜单中当鼠标指向一个具有下级菜单的菜单项时等待出现下级菜单的延迟时间,单位也是毫秒,可以设成100,即等0.1秒就出现。
3.ScreenSaveActive:指屏幕保护功能是否可用,值为0或1,0为不用屏幕保护功能,1为可用。
4.ScreenSaveTimeOut:指屏幕保护的延时,值为一数值,单位是秒,最小值是60秒。
5.ScreenSaveUsePassword:指屏幕保护是否使用密码,值为0或1,0为不设密码,1则使用预设的密码。
6.WaitToKillAppTimeout:是指当用Ctrl+Alt+Del来关闭一个应用程序时出现提示“等待”时选择“等待”的等待时间,单位是毫秒,默认值是10000,可以减小以缩短等待时间。
四、Msconfig文件的使用
Windows98中新增的msconfig在 Windows98中新增加了一个名为msconfig.exe的系统配置实用程序(该程序在 Windows\System目录下),通过该程序可以很方便地进行 Windows98系统一些常用配置的编辑、备份、恢复及设置。该配置程序能很直观地帮助用户使用、维护及改变有关 Windows98启动时的一些装载配置设定,对一些初级用户来说应该比前面所叙之注册表的使用要更简单、直观和容易一些。
运行msconfig后,会弹出如图10的窗口。
图10
窗口中我们可以看到有常规、config.sys、autoexec.bat、system.ini、win.ini以及启动这六个选项,分别简述如下:
1常规选项。可以用来选择启动选项(注意三个选项是唯一选择的),也可以选择诊断启动。
Windows启动时以交互式方法装载驱动程序及软件,还可以用选择性启动来由用户自行决定 Windows98启动时对一些驱动程序及软件项装载与否。后两种选择可以用来帮助用户在系统启动时完成一些特殊要求,也可以帮助用户用来诊断 Windows98启动时的不正常故障。在这个选项里还可以进行这些配置文件的备份及恢复工作,简单到只需按几下有关的按钮即可。
2、config.sys、autoexec.bat、system.ini、win.ini四个基本配置文件的编辑功能选项(如system.ini选项窗口如图11)。
图11
这基本上相当于原来在Windows3.x和9Windows95中用文本编辑器来对这四个文件进行的编辑工作,不过在这儿进行这几个文件的编辑要比用文本编辑器来得更方便安全一些。
3、启动选项。如图12。
图12
用户可以在这里很简单地用勾选或清除启动项选择框的方法来自行决定某一启动项的启用与否。
参考资料:本回答被提问者采纳
一、WINDOWS98注册表概述
关于 Windows98注册表,我们知道 Windows3.X系统是以扩展名为.ini的配置文件来保存系统及应用程序的各种初始化配置信息的。每当 Windows3.x启动时,系统都会从两个最重要的.ini文件即从Win.ini和System.ini中读取各种初始化信息来对整个系统的软硬件环境进行配置,从而正常启动整个Windows系统。一般来说,Win.ini文件中主要包含着控制 Windows用户窗口环境的信息(如各硬件的驱动程序等),我们可以利用文本编辑器通过修改这两个文件来调整一些软硬件的配置以适应自己的需要。从 Windows95开始,原来保存在以上两个初始化文件中的有关信息,都被移到了系统的注册表中,这样注册表就成了 Windows系统关键信息的集中存放地,而原来的System.ini和Win.ini 两个初始化配置文件,则因 Windows系统还需兼容老的16位 Windows应用程序而仍然在 Windows95及 Windows98中保留着。
那么,Windows98的注册表到底是个什么东西,里面又有那些内容呢?
Registry是一个被分为6个主要分支的数据库(如图1)
图1
它的每一个分支都是一个句柄,并以六组不同的关键字值来区分,它们分别为:HKEY_CLASSES_ROOT、HKEY_CURRENT_USER、HKEY_LOCAL_MACHINE、HKEY_USER、HKEY_CURRENT_CONFIG、HKEY_DYN_DATA,每个分支又进一步被分解成更细的分支。事实上,REGISTRY中的许多东西对于用户和系统管理员来说用处不大,但是研究发现直接编辑HKEY_CLASSES_ROOT和HKEY_CURRENT_USER会带给我们很多的欣喜,当然我们也发现更改其他分支的设置同样能为用户提供有用的东西。下面我们就来简单的认识一下注册表的六个分支吧!
1、HKEY_CLASSER_ROOT。该份之下至少包括100个关键字,这个分支下主要包括OLE数据,还包括文件扩展名和文件或应用程序的关联,改变改分支中的数据结构和内容将直接影响到系统软件的应用,此下的信息都被保存在system.dat文件中。
2、HKEY_USER。在这个关键字下显示的信息都保存在User.dat文件中,这包含了与具体用户有关的desktop(桌面)配置、网络连接以及start菜单。如果用户的计算机被配置为使用户的配置文件,那么系统就会为每个用户都创建一个单独的User.dat文件。当一个用户登录到计算机上时,Windows98将读取那个用户的user.dat文件,并把该文件放入内存中的Registry中。
3、HKEY_CURRENT_USER。它是适用于当前用户的HKEY_ USER部分。如果只有一个用户,即确省用户,那么HKEY_USER\.Default和HKEY_CURRENT_USER是相同信息的不同的显示方式。
4、HKEY_LOCAL_MACHINE。这是针对计算机硬件以及安装的软件所设定的分支。如果计算机有多个硬件配置,那么每个配置的信息都保存在这里。如果你察看一下该分支下的SOFTWARE下面的信息,你会发现生产已安装软件的公司的名字都在这儿了,这个分支为关于每个公司产品的与具体机器有关的信息存放提供一个方便的地方。在这儿,你还可以发现应用程序名字、版本数、应用程序路径名以及以及硬件设置。Microsoft也使用这个分支注册它的软件。
5、HKEY_CURRENT_CONFIGURATION。在这里用户可以找到显示设置情况和使用的打印机。
6、HKEY_DYN_DATA。这里保存了Windows操作性能参数的数据,当Windows98加载后,该信息被保留在RAM中,同时被不断更新。
在Windows98注册表文件中,事实上只有两个隐藏的只读文件System.dat和User.dat组成了Registry,由于这两个文件是二进制的文件,不易被一般的字处理文件所编辑。处理这两个文件,一是采用Registry editor直接来编辑它(如图1),也可以用Registry editor将它们导出来成为一个文本文件即可。
System.dat把一台计算机以及计算机上软件的具体信息保存起来。它不但追踪Windows和其他的安放其信息于Registry中的已安装信息,而且也追踪已发现的硬件以及其配置。
User.dat保存与用户相关的信息,包括鼠标、颜色方案、光标方案、墙纸、访问性设置、图标间隔、字体、键盘布局、键盘延迟和速度、区域设置、浏览器设置以及密码等等。一个用户的桌面图标和网络连接,它们都保存在User.dat文件中。
二、注册表的备份和恢复
由于注册表内存放了计算机许多重要的信息,其功能也十分强大,我们可以通过编辑注册表来实现很多常规方法难于实现的功能。也正因为注册表是各种关键住处的集中存放地,所以如果编辑不当,就会造成一些难于预料的后果,因此在对注册表进行编辑之前,备份和回复注册表的信息非常重要。
大家知道,注册表是由System.dat和User.dat两个具有只读隐藏属性的文件所组成的。在 Windows95里,注册表保存在 Windows目录下的,可以由运行 Windows目录下的注册表编辑器(Regedit.exe)来打开及进行编辑。 Windows95每次开机时,均会自动在这两个文件所在的同一目录下以System.dao和User.dao之名(均为只读隐藏文件)为这一注册表备份,以便为注册表的恢复之用。要特别指出的是:System.dao和User.dao在系统重新再启动后,实际上已用原注册表文件作为蓝本进行了覆盖备份,所以这时的备份文件从严格意义上来说已无备份恢复之价值了。那么在 Windows98中又是什么样子呢?下面笔者就根据自己的使用体会和有关资料,来谈谈在 Windows98中如何对注册表进行备份及恢复的几种方法。
(一)、直接进行备份及恢复。
这是一种很原始的方法,即直接将所需之System.dat及User.dat两个文件拷贝存放在硬盘某个指定目录下或直接拷到软盘上作为备份,恢复时再将该备份替换覆盖回原处即可,当然在备份及恢复时都需对这两个文件的只读及隐藏属性进行相应的修改操作。需注意的是:一般情况下由于Windows98的注册表(包括System.dat和User.dat两个文件)往往有近2M甚至更大,用一般1.44M的3寸软盘来存储备份是放不下的,所以必须利用压缩软件将其压缩后才能放入1.44M软盘中。当需要恢复时,还需要用解压缩软件将其解开后再放入 Windows目录下替换覆盖原注册表数据。
用这种方法的好处是如因注册表问题而导致系统瘫痪,开机后无法进行 Windows系统时,可用应急启动盘进入 Windows98自带的DOS7.1界面后,用常规的DOS操作来将存在硬盘或通过解压缩软件将软盘中的备份覆盖回原处,恢复原备份时注册表的正常数据。
(二)、利用Regedit注册表编辑器自带的导出及引入功能备份和回复。
运行Regedit.exe打开 Windows98注册表后,利用“注册表”的“导出”及“引入”功能也可以用来备份或恢复注册表信息。具体方法如下:
1、打开如图2的左上角“注册表”下拉菜单,点击“导出注册表文件”项。
图2
2、在出现的“导出注表文件”对话框中,键入欲备份注册表的文件名及其保存位置,再按“保存”按钮即可(如图3)。
图3
若需恢复注册表时,用同样的方法打开注册表编辑器,打开“注册表”下拉菜单后点击“引入注册表文件”项,在出现的对话框中选中所需恢复的备份文件,再按“打开”按钮即可将该注册表备份恢复回 Windows系统了。
该方法主要适合于Windows系统还未瘫痪或能用启动时按F8键的方法,选择安全模式启动Windows98系统时恢复注册表之用,如因注册表问题而连 Windows系统都进入不了时,则该法就无法应用了。此外因备份无法压缩而其大小又超过1.44M软盘容量,所以应用该法也只能将备份保存在硬盘里了。
(三)、 Windows98的自动备份注册表。
Windows98在每次开机是都会自动地备份Registry文件和Win.ini、System.ini文件,Win98的自动备份注册表功能取消了在Win95中每次开机时自动以System.dao 和User.dao为名的两个文件来备份注册表数据的功能,而新增加了一个以Cab(Cabinet)作后缀的压缩文件作为注册表备份的功能。具体使用如下:
1、备份。如果你在启动程序组里添置了Scanreg.exe文件, Windows98系统自动完成注册表的备份。在用户当天第一次开机时, Windows98将会自动将系统中原有的注表信息,包括System.dat 和User.dat,也包括了System.ini和 Win.ini这四个文件都压缩成Cab形式的文件,以rb001.cab、rb002.cab 等等名字的Cabinet文件存放在 Windows\Sysbckup目录下,系统自动保存最近5开机天(注意不是5天)的注册表数据,超过5开机天时则自动挤掉最早日期的备份文件。执行该命令的是Windows98自带的Scanregw.exe文件,也可以在纯DOS模式下执行纯DOS模式文件Scanreg.exe。
如果用户想在使用Windows98的同时,来创建Registry的一个备份,那么运行Scanreg.exe,Scanreg会扫描系统注册表,如果未发现系统注册表任何错误,它将告诉用户它已在当天备份了注册表,并询问是否想现在备份?(如图4)
图4
用户还可以自由的决定Windows98在开机时是否调用Scanreg文件,这只要在系统的程序组里选中不选Sanreg文件即可。用户也可以决定保存多少天的备份,决定保存的地点,以及决定同备份文件一起保存的其他文件,用户可以在\windows\下的scanreg.ini文件中设置、修改这些参数。
2、恢复:可以用 Windows自带的Extract.exe(在 Windows\command目录下)解开该压缩文件恢复替换回原注册表文件即可,也可用其他第三方解压缩程序如 Winziop7.0等解开所需之rb001.cab等备份压缩文件覆盖回去。当然,也可以进入实模式DOS状态,运行Scanreg.exe文件恢复备份的注册表。步骤如下:
1).单击“开始”,再单击“关闭系统”;
2).单击“重新启动计算机并切换到MS-DOS方式”,然后单击“是”;
3).进入Windows目录下。例如,如果你的Windows安装在C:\Windows目录下,应键入以下内容CD C:\WINDOWS后回车;
4).在MS-DOS模式下键入C:\WINDOWS\COMMAND\SCANREG/RESTORE后回车。
按照上述步骤,可以将注册表恢复到最后一次启动计算机时的状态。
三、自带的注册表编辑器-Registry Editor的使用
事实上,Microsoft已经创建了多个用户界面如“控制面般”、“打印机”等等对话框,使用他们可不必直接编辑注册表来改变Registry内的参数值。也许,微软公司提供的这些界面窗口对于一般用户来说是足够了,可对于想深入了解Windows98的用户,这就远远不够了!这时候,Windows98提供的注册表编辑器“Registry Editor”就可以帮助你实现你的希望了!
使用Windows98提供的用户界面来改变Registry的值是最安全的方法,而使用注册表编辑器时,可能会改变或删除注册表的关键元素,甚至会导致系统运行的不正常!因此在使用注册表编辑器之前,最好现备份一次注册表信息!
(一)启动注册表编辑器。
用户可以在\windows下找到Registry editor,选中后双击它,即可启动注册表编辑器(如图1)。也可以在开始菜单下选择运行命令,在命令窗口中输入“Regedit”也可以启动它。Windows98 setup 没有把它放在一个Start菜单上。
(二)、Registry editor的基本操作
下面我们来看看注册表编辑器的一些基本操作命令。这里我以使用当前的Desktop作为理想的位置的操作举个例子来说明一下。
1、首先单击HKEY_CURRENT_USER左边的加号。单击control panl(控制面板)左边的加号,然后单击desktop旁边的加号,选中Windows Metrics选项。这时,会在右边的窗口中充满了常量和数值(如图5)。
2、右击编辑器的右边的窗格,会弹出一个窗口(如图5),
图5
我们可以选择它来创建一个主键、一个字符串值、一个二进制值或者一个DWORD 值。关键字和任意一个常量都可以连接在WindowsMetrics上。
3、右击Registry左边窗口的desktop关键字,会弹出如图6的窗口。在这里,用户可以合并注册表已扩展的分支,创建一个新的关键字、字符串值、或二进制值,查找文本或数值字符串,或者删除、重命名该关键字等等操作。
4、右击编辑器的右边的窗口中的关键字名,将会显示一个上下文菜单,它允许用户调整该常量的值,或者删除该常量及其它的值以及重命名的命令。
图6
(三)、导入导出注册表信息
如前面讲过,在备份注册表信息时可以用这册表编辑器将这册表信息导出到一个带有reg扩展名的ASCII文件中。用户可以导出整个注册表,前面已经讲过这种使用方法。用户也可以导出注册表的一个分支,只要在导出之前,选中注册表左边的窗格的该分支即可。
在导出时,编辑器会自动给导出文件一个扩展名.reg,这个文件时可以被写字板编辑的一个文件。如图7就是导出的 registry文件的一部分在写字板中显示的内容。
图7
1、查找编辑一个导出的Registry文件。
导出一个注册表文件的一个目的就是编辑查找信息。在注册表编辑器里也可以编辑和查找,但是它的功能弱,速度慢,远远没有写字板的功能强。
在注册表编辑器里,只允许用户在关键字区域、常量名区域或值的区域内键入特定类型的值。而Wordpad的功能十分强大,如果想对注册表进行大量的更改,那么导出注册表再编辑是个好方法。当然如果用户编辑导出的注册表文件时会犯些错误,而这些错误在注册表编辑器里就会得到避免!
2、把一个文本文件导入或合并到注册表里。
如果你已编辑了导出的注册表文件,那么只要按照上面的所讲的恢复备份操作,就可以把它放回原处。同样,如果用户创建了一个这样的文本文件,它带有正确格式的关键字、常量名、数据值,用户也可以把它导入到注册表文件中。
3、改变导出文件的缺省行为。
如果你已经导出了一个注册表文件,你会发现这个文件的标示是 的注册表文件格式,也就是说它的缺省行为是“合并”。如果你单击它,执行的一个合并命令。用户也可以改变该文件的缺省行为,使其变成编辑命令,以避免用户的误操作使得不该合并的文件合并回去了。
(1)、打开任意一个浏览器窗口,如打开“我的文档”窗口。选择“查看”下的“文件夹选项”菜单,然后单击“文件类型”如图8。
图8
(2)、选中“注册表”项目,比单击“编辑”按钮,弹出图9的窗口。选中“编辑(E)”,并单击“设为默认值(S)”。
图9
(3)、单击“关闭”即可。
这时,你再单击.reg的注册表文件时,它的缺省行为变成了编辑状态,这与Windows 98界面其他部分保持了一致。
三、注册表使用实例
下面介绍一些注册表使用的一些实例。
(一)、改变软件注册的主人
你是否注意过,一般在安装软件时,它会向你询问用户的名字和公司的名字,这些信息都被保存在注册表信息里。用户也可以改变这些设置。操作方法如下:
1、打开注册表编辑器。
2、定位到HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion.
3、右击右边窗口中的RegisteredOwner和/或RegisteredOrganization,并改变其名字即可。
4、退出注册表编辑器。
(二)、增加用户自己的提示
Windows98会为第一次使用的用户提供提示功能。同样用户自己也可以改变注册表来编辑来源与Microsoft的提示,并为其他的用户创建新的提示。步骤如下:
1、打开注册表编辑器。
2、定位到HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\explore\Tips。
3、键入比已有的提示数目最大数更大的数目。例如,Microsoft最后的一个数是47,那么用户就键入48。按Enter。
4、双击用户刚刚键入的那个数,键入一个新的提示,单击ok。
5、同样,用户也可以双击一个已有提示的相关联数目,用户也可以编辑它。
(三)、改变Windows 98各种输入法的顺序。
假如你已在系统里安装了多种汉字输入法,那么有没有碰到要连续按多次输入法切换键,才能找到所需输入法的情况?有没有办法能快速切换到所需的输入法?我想第一种方法就是重新安装某一汉字输入法,将最常用的输入法排在输入法列表的最前头。因为Windows98本身并不提供汉字输入法顺序的调整方法。第二种可以通过修改注册表来调整输入法的顺序、增加或删除输入法,甚至可做到Windows98启动后的缺省输入法为汉字而不是英文。
在注册表HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\keyboard layout\下存放着各中输入法对应的主键,其中E00E0804--微软拼音输入法、E00C0804--表形码输入法、E0050804--区位码输入法、 E0040804--智能ABC输入法、E0030804--郑码输入法、 E0020804--双拼输入法、E0010804--全拼输入法、 00000409--英文输入法。在HKEY_USERS\.DEFAULT\keyboard layout\preload\下则是系统所安装的输入法的主键及键值,其主键为自然数,键值为上表中各输入法对应的主键。如果系统已安装了“智能ABC”和“全拼”输入法,则可看到如下的主键和键值:1、00000409;2、E0040804;3、E0010804。改变输入法顺序,假设要将输入法顺序变为“全拼”、“智能ABC”和“英文”,可将主键和键值更改如下:1、E0010804;2、E0040804;3 00000409,这样就可以改变系统中输入法的顺序了。
(四)给Windows98换个名
如果要想在win 中所有关于"windows98"对话框中出现的不是windows98,而是取而代之的My windows或其它有意思的名字。那么,打开HKEY_LOCAL_MACHINE\SOFTWARE\MICROSOFT\Windows\Current Version,选中Version字串,双击将Windows98换成你希望的名字,而且无需启动,自动生效。
(五)通过"我的电脑"直接启动资源管理器
你想让“我的电脑”成为资源管理器吗?打开HKEY_CLASS_ROOT\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\Shell,右击Shell,建立新主键,出现"新键#1",改名为"Open",再在Open下建"Command"主键,方法同上。双击"Command"主键下的"默认"字符串,将其键值改为"explorer/ec:\"(其缺省打开路径为"c:\",要想改变,将"c:\"换为指定的路径名即可)。生效后双击"我的电脑"打开的就不再是"我的电脑"窗口,而是资源管理器了。如果你不想启动资源管理器,则将前一步输入的"explorer/ec:\"改为其他程序名。如"Regedit"。那么双击"我的电脑"打开的就是注册表编辑器了。
(六)、去掉桌面快捷方式图标上的箭头
如果你觉得Windows98快捷方式图标上的箭头碍眼,那么让可以修改注册表去掉它。打开注册表编辑器,在HKEY_LOCAL_MACHINE\Software\classes\lnkfile和HKEY_LOCAL_MACHINE\Software\classes\piffile两处的键值中都有一个"Isshortcut"的字符串值,删除它,重新启动计算机后,你就不会看到快捷图标上的箭头的。
(七)、删除"运行"和"查找"对话框中的文件名
�每次从"开始/运行或查找"中键入文件名,都会保存在相应的下拉菜单中,日积月累,增加查看的麻烦,并且对于安全来考虑,也需要清除它。打开HKEY_USER\Default\software下面的Microsoft\Windows\Current Version\Explorer\runMRU,在右窗口的"运行……"对话框删除不需要的文件名;打开HKEY_USER\Default\Software\Microsoft\Windows\Current Version\Explorer\DOCFind SpecMRU,在右窗口的"查找……"对话框删除不需要的文件名,重启动Windows后生效。
(八)、隐藏桌面的所有图标
有时出于某种特别的需要,我们必须隐藏桌面上的所有图标。首先打开出册表编辑器,选中HKEY_CURRENT_USER\Software\Micreosoft\Windows\Current version\Policies\Explore,右击右窗口空白处选"新建/DWORD",出现"新值 #1"改名为“Nodesktop”,双击将其键值改为1。恢复时只需将值改为0,或直接删除Nodesktop即可。如果更名为Nosavesetting,双击将其键值改为1,则会使桌面保持在第一次设置时的状态,即锁住桌面。如果更名为Noclose,双击将其键值改为1,则生效后开始菜单无"关闭系统菜单"选项。恢复法同上,重启动后生效。
(九)、给你的软件增添声音
可以通过注册表的改变来为单个应用程序增加一些声音。打开HKEY_CURRENT_USER\Appevents\Schems\Apps“Apps”下面的 ".Dfault"就是每种事件所要发出的声音,对"Apps"单击鼠标右键,选"新建"的"主键",输入应用程序的名字,不用扩展名。然后再右击你新建的主键,选"新建"的"主键",输入名字为"Open"。然后,到控制面板选"声音",能从列表中找到你的应用程序。启动计算机即生效。
(十)、一些修改桌面和屏幕设置的参数
打开注册表编辑器,在HKEY_CURRENT_USER\ControlPanel\desktop下可以看到一些项目介绍如下,改变这些项目就可以改变系统的一些功能,读者不妨一试,这里不再赘述:
1.HungAppTimeout:是指一个应用程序出错时试图等待响应的时间,单位为毫秒,缺省值为5000毫秒,可以减少为3000毫秒,以加快系统的响应能力。
2.MenuShowDelay:是指“开始”菜单中当鼠标指向一个具有下级菜单的菜单项时等待出现下级菜单的延迟时间,单位也是毫秒,可以设成100,即等0.1秒就出现。
3.ScreenSaveActive:指屏幕保护功能是否可用,值为0或1,0为不用屏幕保护功能,1为可用。
4.ScreenSaveTimeOut:指屏幕保护的延时,值为一数值,单位是秒,最小值是60秒。
5.ScreenSaveUsePassword:指屏幕保护是否使用密码,值为0或1,0为不设密码,1则使用预设的密码。
6.WaitToKillAppTimeout:是指当用Ctrl+Alt+Del来关闭一个应用程序时出现提示“等待”时选择“等待”的等待时间,单位是毫秒,默认值是10000,可以减小以缩短等待时间。
四、Msconfig文件的使用
Windows98中新增的msconfig在 Windows98中新增加了一个名为msconfig.exe的系统配置实用程序(该程序在 Windows\System目录下),通过该程序可以很方便地进行 Windows98系统一些常用配置的编辑、备份、恢复及设置。该配置程序能很直观地帮助用户使用、维护及改变有关 Windows98启动时的一些装载配置设定,对一些初级用户来说应该比前面所叙之注册表的使用要更简单、直观和容易一些。
运行msconfig后,会弹出如图10的窗口。
图10
窗口中我们可以看到有常规、config.sys、autoexec.bat、system.ini、win.ini以及启动这六个选项,分别简述如下:
1常规选项。可以用来选择启动选项(注意三个选项是唯一选择的),也可以选择诊断启动。
Windows启动时以交互式方法装载驱动程序及软件,还可以用选择性启动来由用户自行决定 Windows98启动时对一些驱动程序及软件项装载与否。后两种选择可以用来帮助用户在系统启动时完成一些特殊要求,也可以帮助用户用来诊断 Windows98启动时的不正常故障。在这个选项里还可以进行这些配置文件的备份及恢复工作,简单到只需按几下有关的按钮即可。
2、config.sys、autoexec.bat、system.ini、win.ini四个基本配置文件的编辑功能选项(如system.ini选项窗口如图11)。
图11
这基本上相当于原来在Windows3.x和9Windows95中用文本编辑器来对这四个文件进行的编辑工作,不过在这儿进行这几个文件的编辑要比用文本编辑器来得更方便安全一些。
3、启动选项。如图12。
图12
用户可以在这里很简单地用勾选或清除启动项选择框的方法来自行决定某一启动项的启用与否。
参考资料:本回答被提问者采纳
第2个回答 2007-02-03
什么是注册表?
注册表因为它复杂的结构和没有任何联系的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”句,?/div>
注册表因为它复杂的
注册表因为它复杂的结构和没有任何联系的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”句,?/div>
注册表因为它复杂的
第3个回答 2007-02-03
什么是注册表
在windows的开始/运行菜单中输入"regedit"你就可以通过注册表编辑器看到注册表,注册表是什么呢?简单地说,它是用来对windows操作系统进行配置的一个工具.通过它,可以对操作系统及应用软件进行优化,可以自己设置windows的使用权限,可以解决硬件及网络设置不当带来的故障甚至可以改造自己的操作系统.
在windows 3.X时代,主要通过WIN.INI及SYSTEM.INI对windows进行配置,但WIN.INI及SYSTEM.INI文件存在着安全性不高,大小受限制等问题,为了解这一问题MICROSOFT公司在WINDOWS98以后的版本中引入了注册表这一便更好的对windows系统进行配置,这就是为什么我们要使用注册表的原因.
注册表的作用是保存程序所需要的信息,当程序需要这些信息时,就从注册表里读出.因此,注册表最基本的功能就是保存信息.
当了解了注册表的主要功能--保存信息后,再来了解其保存信息后,再来了解保存信息所发挥的作用!
1,记录安装信息;
2,设置硬件属性;
3,定制WINDOWS以及应用软件.
注册表逻辑结构中最基本的是主键,子键,键值项以及键值.它们是按照分组的方式来管理和组织的.首先是最底根键, 每个根键下有若干个子键,每个子键下又可以有若干(一个或多个)子键,子键下可以有一个或多个键值项和键值.
根键:注册表中最底层的键,类似于磁盘上的根目录.
子键:子键位于根键下又可以嵌套其他子键中,在注册表的六大根键中,有若干的子键,而每个子键中又可以嵌套成千上万的子键.
键值项与键值:在每个根键和子键下,可以有若干键值,这种结构类似于磁盘上根目录和子目录里的文件和文件内容.
windows 9x注册表逻辑结构中包含六个根键,每个根键包含着分类不同的信息!在windowsNT/2000/XP中,如果用windows自带的编辑器打开的时候,只能看到五个,还有一个隐藏的根键:HKEY_PERFOR_MANCE_DATA.
*HKEY_CLASS_ROOT
记录windows操作系统中所有数据文件的格式和关联信息,主要记录不同文件的文件名后缀和与之对应的应用程序其下子键可分为两类:一类是已经注册的各类文件的扩展名,这类子键前面都带有一个".";另一类是各类文件类型有关信息.
*HKEY_CURRENT_USER
此根根键包含当前登录用户的用户配置文件信息,这些信息保证不同的用户登录计算机时,使用自己的修改化设置,例如自己定义的墙纸,自己的收件箱,自己的安全访问权限.
*HKEY_LOCAL_MACHINE
此根键包含了当前计算机的配置灵气,包括所安装的硬件以软件设置.这些信息是为所有的用户登录系统服务的.这是事个注册表中最庞大也是最重要的根键!
*HKEY_USERS
HKEY_USERS根键包括默认用户的信息(DEFAULT子键)和所有以前登陆用户的信息.
*HKEY_CURRENT_CONFIG
此根键实际上是HKDY_LOCAL_MACHINE/CONFIG/0001分支下的数据完全一样.
*HKEY_DYN_DATA根键
这个键保存每次系统启动时,创建的系统配置和当前性能信息.这个根键只存在于windows 9X中
*HKEY_PERFORMANCE_DATA
在windowsNT/2000/XP注册表中虽然没有HKEY_DYN_DAT键,但是它却隐藏了一个名为"HKEY_PERFORMANCE_DATA的键.所有系统中的动态信息都是存放在此子键中,系统自带的注册表编辑器无法看到些键.介可以用专门的程序来查看此键,比如使用性能监视器.
在windows的开始/运行菜单中输入"regedit"你就可以通过注册表编辑器看到注册表,注册表是什么呢?简单地说,它是用来对windows操作系统进行配置的一个工具.通过它,可以对操作系统及应用软件进行优化,可以自己设置windows的使用权限,可以解决硬件及网络设置不当带来的故障甚至可以改造自己的操作系统.
在windows 3.X时代,主要通过WIN.INI及SYSTEM.INI对windows进行配置,但WIN.INI及SYSTEM.INI文件存在着安全性不高,大小受限制等问题,为了解这一问题MICROSOFT公司在WINDOWS98以后的版本中引入了注册表这一便更好的对windows系统进行配置,这就是为什么我们要使用注册表的原因.
注册表的作用是保存程序所需要的信息,当程序需要这些信息时,就从注册表里读出.因此,注册表最基本的功能就是保存信息.
当了解了注册表的主要功能--保存信息后,再来了解其保存信息后,再来了解保存信息所发挥的作用!
1,记录安装信息;
2,设置硬件属性;
3,定制WINDOWS以及应用软件.
注册表逻辑结构中最基本的是主键,子键,键值项以及键值.它们是按照分组的方式来管理和组织的.首先是最底根键, 每个根键下有若干个子键,每个子键下又可以有若干(一个或多个)子键,子键下可以有一个或多个键值项和键值.
根键:注册表中最底层的键,类似于磁盘上的根目录.
子键:子键位于根键下又可以嵌套其他子键中,在注册表的六大根键中,有若干的子键,而每个子键中又可以嵌套成千上万的子键.
键值项与键值:在每个根键和子键下,可以有若干键值,这种结构类似于磁盘上根目录和子目录里的文件和文件内容.
windows 9x注册表逻辑结构中包含六个根键,每个根键包含着分类不同的信息!在windowsNT/2000/XP中,如果用windows自带的编辑器打开的时候,只能看到五个,还有一个隐藏的根键:HKEY_PERFOR_MANCE_DATA.
*HKEY_CLASS_ROOT
记录windows操作系统中所有数据文件的格式和关联信息,主要记录不同文件的文件名后缀和与之对应的应用程序其下子键可分为两类:一类是已经注册的各类文件的扩展名,这类子键前面都带有一个".";另一类是各类文件类型有关信息.
*HKEY_CURRENT_USER
此根根键包含当前登录用户的用户配置文件信息,这些信息保证不同的用户登录计算机时,使用自己的修改化设置,例如自己定义的墙纸,自己的收件箱,自己的安全访问权限.
*HKEY_LOCAL_MACHINE
此根键包含了当前计算机的配置灵气,包括所安装的硬件以软件设置.这些信息是为所有的用户登录系统服务的.这是事个注册表中最庞大也是最重要的根键!
*HKEY_USERS
HKEY_USERS根键包括默认用户的信息(DEFAULT子键)和所有以前登陆用户的信息.
*HKEY_CURRENT_CONFIG
此根键实际上是HKDY_LOCAL_MACHINE/CONFIG/0001分支下的数据完全一样.
*HKEY_DYN_DATA根键
这个键保存每次系统启动时,创建的系统配置和当前性能信息.这个根键只存在于windows 9X中
*HKEY_PERFORMANCE_DATA
在windowsNT/2000/XP注册表中虽然没有HKEY_DYN_DAT键,但是它却隐藏了一个名为"HKEY_PERFORMANCE_DATA的键.所有系统中的动态信息都是存放在此子键中,系统自带的注册表编辑器无法看到些键.介可以用专门的程序来查看此键,比如使用性能监视器.
第4个回答 2007-02-03
说不如你自己看,你运行REGEDIT就可以看见啦,不过那个很难的,建议你还是不要学习啦