当前位置:  夜鹰网校->注册表->注册表结构->windows注册表背后的秘密(下)
☆☆ 栏目导航 ☆☆

注册表入门

注册表结构
注册表修改
注册表应用
注册表工具
注册表在线修复

windows注册表背后的秘密(下)

http://www.yy0736.com  加入日期:2004.11.25  点击数:

[ ]

HKEY_CURRENT_CONFIG

win95一般只使用一个硬件配置文件。如果有多个硬件配置文件。HKEY_LOCAL_MACHINE\Config中就会添加一个键。HKEY_LOCAL_MACHINE\Config包含了HKEY_LOCAL_MACHINE中相同的数据。

在启动时,你可以选择你愿意使用的配置文件。如果有多个安装,每次系统重新启动时,你就必须选择.HKEY_CURRENT_CONFIG是在启动时控制目前硬件配置的键。

在系统启动以后,任何地方的变化都会自动影响到它。程序员经常使用HKEY_CURRENT_CONFIG方便的来存取配置信息。

HKEY_CURRENT_CONFIG包括了系统中现有的所有配置文件的细节。你的选择影响了哪一个硬件配置文件成为现在的。举例来说,如果配置0002被选择了,所有0002的配置信息会被映射到这些键上
  HKEY_CURRENT_CONFIG允许软件和设备驱动程序员很方便的更新注册表,而不涉及到多个配置文件信息。 HKEY_LOCAL_MACHINE中同样的数据和任何注册表的变化都会同时的变化。
  
  HKEY_DYN_DATA
  在HKEY_DYN_DATA键中所有信息都是在启动时被写入的。它再现了Win95在系统中控制硬件所使用的动态数据。它仅只有三个键。它们保留了系统目前状态监视所需要的很简单的信息
  在HKEY_DYN_DATA中除了暂时文件,没有任何数据被写入硬盘。在系统每次重新启动时所有的数据被重新写入。另外,在既插即用的情况下,当设备改变状态时一些数据可能会写入。(比如说系统运行时在一个PCMCIA槽中插入一块网卡)
  Config Manager
  配置管理包括了在Win95中每个安装设备启动时的信息。在启动时它从HKEY_CURRENT_CONFIG中获得它的列表并且检查每个项。如果找到一个没有在列表中列出的设备,它向系统报告这些信息来安装。如果列表中的一个设备不在系统中,它就会在这个键值中显示这个情况。
  Enum
  系统中已安装的每个设备的启动状态都在这个键中被列出。如果某个设备没准备好,它就在这里显示出来。如果它准备好了,它也会显示出来。每个设备指针也被列出显示哪个注册这个设备用来做它的控制
  PerfStats
  系统中所有设备的性能特征保存在这个键。它是十分难读的,但是通过系统监视器就十分容易看懂
  Security
  这个键显示了登陆在这台机器和网络上的登陆用户从哪个证明者得到有效的证明
  
  HKEY_USERS
  HKEY_USERS将缺省用户和目前登陆用户的信息输入到注册表编辑器,在win95中,它仅被那些配置文件激活的登陆用户使用,同样在nt下,它也是这样。
  win95从user.dat中取得他们的信息,winnt从ntuser.dat中取得信息。.dat文件包含了所有基于用户的注册表设置并且允许你取配置这些用户的环境。如果你改变了缺省用户的设置,所有新用户会继承同样的设置。而且,那些已经被建立的用户变的失效。
  HKEY_USERS\.DEFAULT
  这个键的设置被用于所有新用户,用户们的配置文件从这个配置文件中建立。它包括所有的环境,屏幕,声音,和其他用户相关的功能。
  HKEY_USERS\.DEFAULT\AppEvents
  这个键列出了事件响应,描述,和各种系统功能的声音
  HKEY_USERS\.DEFAULT\AppEvents\Schemes
  缺省和当前的声音方案在这个键和它的子键中列出。在事件的时间中系统播发这些声音
  HKEY_USERS\.DEFAULT\Console
  这个键保存了MS-DOS窗口的选项、布局、荧屏颜色和字体设置。
  HKEY_USERS\.DEFAULT\Control Panel
  所有在控制面板里配置设置的信息全保存在这个键和它的子键中
  HKEY_USERS\.DEFAULT\Control Panel\Accessibility
  这个键保存了所有在控制面板中辅助功能的设置。
  HKEY_USERS\.DEFAULT\Control Panel\Appearance
  这个键保存了所有在控制面板里显示外观的设置
  HKEY_USERS\.DEFAULT\Control Panel\Appearance\Schemes
  这个键列出了缺省可用的方案,和每个方案包括的颜色和字体。
  HKEY_USERS\.DEFAULT\Control Panel\Colors
  这个键保存了Windows每个缺省颜色的设置。每个值(颜色名)像一个RGB(红、绿、蓝)值列出来。比如说,黑色是0 0 0,意思就是红色值是0,绿色值是0,蓝色值也是0。相反的白色就是255 255 255。其他的颜色都是RGB值合成的。
  HKEY_USERS\.DEFAULT\Control Panel\Sound
  这个键决定了在错误时系统是否发出响声
  HKEY_USERS\.DEFAULT\Environment
  这个键保存了环境设置,特定的临时性文件的位置
  HKEY_USERS\.DEFAULT\Keyboard Layout
  键盘布局设置被设置成标准美国英国标准传统键盘布局。如果你选择了其他的布局,那么数字列表会不同
  HKEY_USERS\.DEFAULT\Software
  软件的安装设置被保存在这个键中,缺省用户只有微软程序的设置
  HKEY_USERS\.DEFAULT\Software\Microsoft
  微软的应用程序的相关设置被放在这个键里。如果其他微软程序被安装,它们就更新这个用户的微软键。在下面的项目显示了缺省的控制
  HKEY_USERS\.DEFAULT\Software\Microsoft\Windows
  这个键保存了只和windows有联系,和windows nt没关系的设置,这些设置在win95中是相同的,使用同样的驱动和功能
  HKEY_USERS\.DEFAULT\Software\Microsoft\Windows NT
  基于nt 功能的设置在这个键中。windows nt没有这些设置就不能够运行,它建立环境和网络上的进程,用户权限,打印机,字体等等
  HKEY_USERS\.DEFAULT\Software\Microsoft\Windows NT\CurrentVersion\Winlogon
  这个设置控制了windows nt的登陆功能
  HKEY_USERS\.DEFAULT\UNICODE Program Groups
  缺省unicode程序组只是在使用程序管理器时被使用,explorer并不使用它们
  S-1-5-21-1658001358-1336221227-1912232085-500 (SID)
  HKEY_USERS\S-1-5-21-1658001358-1336221227-1912232085-500
  这个是目前登陆用户的sid,每一个网络上的用户都被域用户管理器分配了一个sid,每一个sid都是唯一的,所以它依赖与登陆用户,这个信息改变。它是从用户配置文件的ntuser.dat文件调出的。一般来说,它的子键很多,是基与安装的软件的,选择的和最终设置
  HKEY_USERS\SID\Network
  这个键显示了所有连接到其他系统的映射。举例来说,如果你映射驱动器H: 到\\server1\docs,它会作为一个子键显示出来
  HKEY_USERS\SID\Printers
  这个键显示了所有安装的,共享的和连接的打印机
  HKEY_USERS\SID\Software
  这个键为单独的用户扩展,基于为用户或者被用户安装的其他软件。
  HKEY_USERS保存了所有目前登陆用户和缺省用户的设置。登陆用户的改变就如同不同用户使用这个系统,sid是用户信息的表现。使用程序重新找到任何用户的ntuser.dat文件并且把他放如到注册表中观看和编辑。
  
  HKEY_CURRENT_USER
  HKEY_CURRENT_USER包含着在HKEY_USERS安全辨别里列出的同样信息。任何在HKEY_CURRENT_USER里的改动也都会立即HKEY_USERS改动。相反也是这样。
  HKEY_CURRENT_USER允许程序员和开发者易于存取目前登陆用户的设置。通过建立这个键,微软很容易在不涉及到用户的SID下改变,添加和设置。
  也就是说,所有当前的操作改变只是针对当前用户而改变,并不影响其他用户。
  
  注册表后面的秘密(三)注册表的损坏和解决方法
  
  
  
  三、注册表的损坏和解决方法
  注册表可能出现的问题。
  如果注册表受到严重的损害,存取硬件和软件可能会受到很大的限制,甚至系统不能启动。可能因为一个很小的问题,一个应用程序将不能正常的运行,或者运行的不稳定。
  当注册表在运行时是受保护的,所以它不可能被复制,删除,或者改变内容,除非经过一个“验证过的”程序(比如安装程序,注册表编辑工具,和域用户管理器改变安全策略和浏览器等)。由于这些保护,注册表是十分安全的,但是并不是完全能防止的。问题仍会发生,你需要作好认识它们的准备来应付这些问题。
  当你注册表出现问题时,我们大多数会听到或者感觉到下面一些症状来认识问题,注册表问题的特征有:
  昨天计算机(或者软件程序)还工作,但是今天它就不工作了;
  在我安装软件/硬件前它还工作,但是现在我无法使用它了;
  我的系统不象以前那样工作了;
  当我试图关闭计算机时,硬盘响个不停却没有什么反应;
  我的计算机启动不了了;
  天!又是蓝屏,死机了;
  注册表变的不正常一般来说有三种原因:
  1、应用程序和驱动被添加到系统中
  1)在注册表中找出大半的错误与添加和删除程序有关。多数用户自己添加或者更新驱动,应用程序等等。而且添加和删除都是多次的。
  2)程序本身也有问题。没有任何应用程序没有bug或者错误。最好的情况,就是错误微乎其微,复杂深奥的问题你可能从来没见过。在设计程序时因为受时间和经费的限制,这些错误被放置不管。作为一个程序员来讲,在程序里有错误可能是次要的,但是它使系统崩溃那就变成一个大问题了。
  3)驱动程序不兼容。个人计算机世界的开放结构体系造成了一定的风险,因为任何类型的部件组合在一起都是可能的。但测试所有的组合并保证所有设备的兼容性却不太可能。所以当用在Win95下的驱动被用在Winnt时,某些问题就会产生。
  4)在应用程序安装过程中在注册表中添加了不正确的项。在安装时,多数应用程序使用叫一个叫SETUP.INF的文件详细说明例如需要什么磁盘,哪个目录将被建立,从哪里复制文件,使应用程序工作正常所需要建立的注册表项等等详细信息。如果在SETUP.INF中有一个错误,这个改变也仍然会出现,就会出现严重的问题。
  5)一个应用程序导致另一个应用程序和它缺省的文件关联出现错误。当一个应用程序被安装后,缺省文件类型被记录在注册表中。然后用户可以通过双击来启动应用程序和装载文件。很多时候,其他应用程序也会使用同样的扩展名。举例说,当一个TIF图形在基于注册表里的设置被激活时,最后一次装载的程序将会变成一个执行体。有时候,彻底不相同和根本不兼容的程序会在它们自己的文档文件中使用相同的文件扩展名,启动文档的快捷方式将不会工作。在用户操作过程中,如果在文件打开方式选择了不正确的程序,就会造成一定的问题。
  6)在反安装时出现的错误。当你在控制面板里的添加/删除程序种删除程序时,通过应用程序自身的反安装特征,或者通过第三方软件,这可能会对注册表造成损坏。除此之外,删除程序,辅助文件,数据文件和反安装程序可能会试图移去注册表的参数项。因为系统不可能知道一个应用程序在注册表中所要存取的相关参数项,这将会不经意的移除掉其他应用程序的参数项。
  7)字体的错误。当注册表中字体ID出错,你将在应用程序中看到一种不同的字体。这就让人感觉很讨厌并可能需要你移去部分或全部字体并取代它们。这经常发生在用户频繁安装和删除字体的时候。
  2、硬件设置改变或者硬件失败
  1)如果计算机系统自身有问题,注册表会有损害。通常的,这些错误可以在正确的系统维护和管理下避免。
  2)病毒问题。病毒很隐秘的改变正常的文件和注册表中的部分内容来影响我们的系统。
  3)计算机用电如果不正常也会影响计算机系统,用UPS可以避免。
  4)磁盘问题。很多时候你会因为容量不够使硬件失败而换掉你的硬盘。如果整块硬盘失败,当然,你将不得不从备份中恢复你的注册表。其他的则是磁盘独立扇区或者簇的故障。虽然这些情况在今天的系统不可能发生,但是磁盘表面介质的故障会使得磁盘部分不可读,包括那些注册表文件位置。
  3、用户改动了注册表
  1)手工改变注册表。当人们手工编辑注册表,由于数据的复杂性和难懂性使得他们难免容易犯错误,而且这个错误可能很严重导致系统工作发生中断。
  2)拷贝其他注册表是很多用户犯的一个严重错误。因为从其他机器上拷贝来的注册表文件并不意味着也会在这一个机器上工作正常。对单独的系统来说注册表都是特殊的。甚至计算机硬件设备相同,拷贝来的注册表在另一个系统上不见得就会工作。如果使用另一个系统的注册表,多数硬件设备将不会工作,用户和安全问题可能造成数据和应用程序信息无法使用。
  
  保护Windows注册表
  保护注册表是很重要的,有很多不同的工具可以实现这一目的。当没有安全设置时,用户可能的错误会更多。幸运的是,他们可以有几中方法来保护Windows注册表,在注册表失败时他们可以用额外的拷贝来恢复注册表。下面就是其中的一些方法:
  1、使用windows备份软件
  注:Win95和Win98备份程序有部分区别,在这里只讲Win98的备份程序。
  Win98中包括一个备份程序。当安装Win98时如果你选择“自定义安装”,或者你可以在控制面板中的添加/删除程序里安装它。当你安装了这个备份程序,从 开始菜单| 程序| 附件 |系统工具 |备份 可以运行它。启动时,这个程序提示你是否新建一个新备份,打开现有的备份作业,或者是还原备份文件
  。
  如果选择新建备份,则会有一个备份向导提示你如何去做备份。
  如果选择取消向导,那么可以自己手工设置要备份的内容。在备份内容里可以备份网络和本地驱动器的文件。可以在你想备份磁盘或者文件的选择框打上对号来做备份工作。然后在备份在何处里填上你做备份的目的位置既可。如果要连同windows注册表一起备份,那么在 作业|选项|高级 里,在“备份windows注册表”选择框打对号就可以了。恢复则是备份的逆过程,这里就不详述了。
  2、在安全模式下复制注册表文件
  当Win95运行时,注册表文件被锁定,只能用注册表编辑器或者系统自己来进行存取,这些文件不能够被复制到其他地方。如果你在安全模式下启动Win95,注册表就不会使用同样的方法载入,这样SYSTEM.DAT 和 USER.DAT就可以被复制。实际上安全模式下系统文件是受保护的。
  在启动时,当计算机显示Starting Windows 95...时按F8键进入安全模式。改变SYSTEM.DAT 和 USER.DAT的隐藏和只读属性这样就可以看到和复制它们。当拷贝完注册表文件,不要忘记了改回它们只读和隐藏属性。
  3、使用微软配置备份来备份你的注册表文件
  CFGBACK.EXE是Win95(Win98中没有这个软件)所附带的备份软件。它在Win95CD-ROM上的\Other\Misc\CFGBACK这个目录。在系统上拷贝所有的文件到任何一个目录,然后在桌面上建立一个CFGBACK.EXE的快捷方式。
  要做一个注册表的备份,启动CFGBACK然后在选择的备份名位置输入一个名字然后点备份继续。
  注意:在使用CFGBACK前确定你已经关掉了所有运行的程序。如果有程序在运行,CFGBACK可能将使得系统崩溃,数据丢失,而且保存的是一个不完整的备份。
  4、导出注册表
  在我看来,如果你没有磁带机或者其他东西。在REGEDIT.EXE中导出选项有一个导出为文本文件。通常使用一个压缩工具,导出工具选项也可以被用做保存和保护注册表的方法。
  要导出在注册表中的任意键,选中这个键然后选择 注册|导出注册表文件。这将会复制这个键,并提示你在那里存放这个键及它的名字,然后用一个扩展名为.REG的文件保存这些数据。
  当我们用文本格式导出注册表。我们可以使用象pkzip或者其他压缩工具压缩它(可以在正常Dos模式运行的)来节省空间。
  为了备份我们可以在windows目录下建立一个用来做备份的文件夹。最少在一个月我们应该进行定期的备份。因为许多计算机用户订阅或购买带有赠送CD的计算机杂志。这些CD上有大量的时间限制的共享软件。许多用户从其中安装一个或者多个程序。当软件过期时它们反安装这些程序,但是这些程序在注册表中留下了一些痕迹。频繁的添加/删除程序会影响注册表,但是有了备份相对来说我们就比较安全了。
  我们必须重新启动计算机到DOS模式下来导入,假定你导出你的注册表为mar99.reg.现在在命令提示下打
  REGEDIT /C MAR99.REG
  注册表编辑器将mar99.reg中的数据导入你的注册表并保存。不过只在命令提示下这个全部导入的工作才比较可靠。
  技巧:如果你的注册表不断的变的庞大,那么先导出它然后象上面那样再逐个导入它。在这个导入导出过程中注册表中不必要的项将被清除出去。如果你使用Win98那么你可以使用Scanreg.exe程序。在windows目录命令提示下打 Scanreg /fix来执行命令。
  警告:当你想看一个导出的注册表内容时(扩展名为.reg的文件),不要直接双击它,扩展名.reg文件和REGEDIT.EXE是相关联的,这将会在没得任何提示时自动把这个文件导入到注册表中。如果这个文件里有不正确的数据,它将会破坏注册表。要编辑这个文件,选中它,然后用鼠标右键点它然后选择编辑。
  请记住,预防要比修复好的多。无论你选择什么样的方法备份注册表,做吧。注册表太容易被改变了,在发生突然事件时你手头上有几个注册表的备份是解决问题最好的方法。
  
  从注册表故障中恢复
  这里有四种不同级别的方法可以从Windows注册表故障中恢复
  Restart
  Redetect
  Restore
  Reinstall
  让我们来看每一个方法来断定来使用它最适合的时间,并且解决何种类型的问题。
  Restart(重新启动)
  Win95注册表大部分内容保存在RAM中。如果哪个信息受损,它就必须重新读取正确的信息。当你重新启动系统,注册表将数据从硬盘读到RAM中就可以使用了。
  拿字体ID问题来说。每种字体在系统中用一个ID号来使用。当一个字体被用在一个文档时,这个字体被这个数字保存并且用一个名字来标识。当字体ID损坏那么字体显示和打印将被其他字体取代。重新启动系统从硬盘上刷新数据,将产生修复过的字体ID,这样字体显示和打印就变的正常了。
  这也就是为什么Windows系统故障经常在重新启动后就又恢复正常的一个原因。
  Redetect the Devices(重新检测硬件)
  如果一个设备工作不正常,那么在注册表中控制设备的设置可能受损了。为了重新设置注册表,你应该删除并且重装设备的驱动,或者你应该让Win95重新检测它们。很多时候,当一个设备工作不正常,它们会在设备管理器上此设备前使用一个惊叹号标志显示出来。很明显,如果设备从不来工作,可能就是其他问题了。但是如果设备以前工作,现在出问题,注册表就需要被恢复。
  要检测一个设备,在控制面板上选择添加新硬件。第一个问题是文你“需要Windows搜索新硬件吗?”如果你选择是,Win95将做一个彻底的搜索去找“新”设备。任何设置不正确的或者没找到驱动的设备将被检测到并显示出来。
  Restore(恢复)
  从CFGBACK中恢复注册表
  从CFGBACK中恢复注册表有很多好处。如果你建立了几个备份,你可以选择正确的一个来恢复。你可以如同做手术般放置排列注册表参数项。
  导入注册表文件
  象前面章节讲述的那样,一个代替使用备份的方法就是导入一个.REG文件。.REG文件包括了目的数据位置,所以对这个文件简单的双击就可以将数据放入注册表。它是所有恢复程序中最简单的,但是也可能造成错误。错误不会是用REGEDIT.EXE把数据写入错误的位置,它很可能出现在用户直接双击注册表文件的时候。
  Reinstall(重新安装)
  重新安装
  最后的方法就是重新安装驱动、应用程序或者Win95。一般来说,它只花费你一个小时左右时间去做这些事。如果你在现有的文件上重新安装,很多配置信息还被安装在同样的地方。同样在安装驱动程序时,你应该重新加入配置数据。
  实际上找出原因并修复它所花费的时间比重新安装还要多,这就是为什么重新安装在技术支持上是一个相当普通的“解决方法”。关键的问题在于,“你是否想找出是什么错误,或者你是否只想让它工作正常?”答案取决于问这个问题的用户情况,发生问题的频繁次数和重新安装的软件的实用性。
  当Windows第一次被安装时它将在启动目录的根目录上创建一个名为SYSTEM.1ST的文件。这是Windows第一次启动时创建的个简单的system.dat文件。你所应该做的就是将这个文件放到windows目录(在dos模式下)并将它的名字改为SYSTEM.DAT。然后重新启动。然后你就可以得到安装时第一次启动的windows。
  因为很多.INI,.DLL和其他文件的改变,这种方法的成功机率大概只超过50%。比如当装IE4.0后系统和注册表将有一个彻底的改变。我们的system.1st文件虽然包含了一个Dll文件的参考,但它可能更新或者改变版本号。
  这里就是几个在注册表出故障的时候恢复它的工具和方法。你的数据可能会安全恢复,但是不管你用什么方法,除了重新格式化硬盘,最好的方法就是做好系统注册表的备份工作。</P><P>有空大家来我主页做做:http://linqiaowh.home.chinaren.com E-MAIL:linqiaowh@sohu.com


作者:不详 来源:不详  

  [夜鹰论坛] [我要留言] [关闭窗口] [ ][TOP]
 

上篇: 认识Windows2000注册表 下篇:windows注册表背后的秘密(上)

     
此文章最新评论(不超过十条)
■评论此文章 ( 有问题请去夜鹰论坛发帖 )
共有评论: 查看全部评论 姓名:
【 声明 】 您所发表的言论将被众多网友阅读,因此,您所发表的言论应不违反中国法律,不违背一般的道德原则,否则,您必须对您的不当言论引发的一切不良后果负责;此外,我们的管理员有权删除您发表的不当言论,谢谢合作!