网站开通天天学习频道
发新话题
打印

[WinServer] WinXP新功能之系统恢复

WinXP新功能之系统恢复

  本文将比较详细地讨论windows xp的恢复功能。为了方便理解和提请注意,首先声明两点:a.下面叙述中出现的"系统恢复"、"系统监视程序"实际是具备监视、恢复两种功能于一身的同一个程序的名字,但为了准确,叙述用到哪个功能就使用相应功能的名子。b.本文源于搜集的英文资料,所涉及的操作和引用的结果理所当然是英文版的,且因windows xp直至本文写成的时候还没有正式发行,所以这些内容仅供参考,我不能保证将来最终结果于本文讲述的情况完全一致。

XP恢复机制的进展

  系统恢复功能是windows系列操作系统的一个重要特色,这一功能的最初仅限于:当windows 运行出现问题后,恢复操作系统。到windows xp,进了一步,除了恢复操作系统,还可恢复私人数据,如:word文档,绘图资料,Email甚至是浏览器的历史资料等等。这比原来只能使用安全模式恢复操作系统有了很大进步。恢复原理是:在系统运行过程中,使用一个监视程序,对所有关键部位、运行中出现的重大变化、新建立的文档、新安装的应用程序等方方面面进行监视,并将结果保存到一个档案文件中,被档案文件记录和保存的主要信息是系统文件的改变和应用程序的改变。这里所说的改变,包括文件建立、安装、更新、版本变化等方面。档案文件的内容是滚动更新的,当新文件存入的时候,会自动将相对老一些的文件清理出去。档案文件是备份保存文件的"仓库"。至于这些东西初始的状态信息,由一个叫做恢复指针的文件所保存。恢复指针与档案文件的关系,好比物品账目与物品保存场所与之间的关系那样,恢复指针好比一份物品的清单――账目;档案文件才是物品存放的仓库。更形象地说,恢复指针文件相当于机器的装配图纸,档案文件相当于配件存放仓库。这种比喻随不是很精当,但足够说明这种关系。需要进行恢复操作时,先由用户确定采用某个"恢复指针",随后依据指针进行恢复操作。随着时间推移。系统可能建立许多个恢复指针。恢复指针可以自动也可以手动建立。但恢复系统的过程一般必须采用人工干预方式操作。后面会讲到一种所谓"自动恢复"功能,听起来好像不错,其实也要用户干预,区别在于恢复项目不同。

  系统监视程序的任务是,每当系统中发生改变之前,机器自动建立易于确认的恢复指针。使用者无需自己记忆机器故障之前的状况,恢复指针通常每天例行进行一遍更新(这是指那些全天都打开计算机的情况),在系统运行遇到"重大事件"的时候(诸如安装应用程序或安装驱动程序)也将自动更新。同时允许用户随时根据自己的情况建立并命名恢复指针,称为手动建立恢复指针!大家记得在注册表管理时,系统总是会自动保留多份注册表文件,各份的区别在于这些文件生产的时间不同。对恢复指针的管理上,也采用类似注册表的办法,系统在一个指定位置保存有多份恢复指针文件,这些文件滚动更新(前面已经提及),使用户能够恢复至变动之前的状态。

应具备的条件

  windows xp第一次安装时,会探测系统具备的条件,只要条件具备,在安装时就会默认安装系统恢复功能。条件是:对windows xp 的专业版和个人版,至少需要预留200M可用的硬盘空间。其它版本需要的可用空间请参考使用说明或帮助文件。如果系统探测不到足够可用的硬盘空间,安装的时候就会自动禁止恢复功能的安装。待到将来条件又具备时,还可以重新安装系统恢复功能。



TOP


切入正题

关于系统恢复,本文共讨论以下几方面:

  .基本功能介绍
  .系统恢复的构成与定位。
  .自动建立恢复指针的原理
  .系统与应用程序文件变化的监视
  .系统恢复过程操作介绍

1. 系统恢复功能介绍:

  一旦系统恢复机制可以投入运行,它就一直监视操作系统的核心设置与应用程序文件,记录并不断拷贝这些文件的当前状态和改变方式。这些搜索来的变化信息被记录到一个监视文件中,监视的范围是那些没有拒绝属性的文件夹及文件。有拒绝属性的文件都是那些根本无需监视的部分。那么,为什么有些文件或文件夹会不受监视呢?这些都是哪一类文件呢?原来,windows中有许多文件本来就是记录系统变化的动态文件,如扩展名是bat、ini、sys、注册表等等。所保存的信息基本上可对应于系统当时的实际状况,无需重复保存。但这一原因还在其次,更重要的是,如果监视程序也监视这些动态文件的变化,这些动态文件反过来又需要保存监视文件的变化,而这种保存又是一种变化并被再次监视到,造成无法结束的循环,这当然是不允许的。应当注意,虽然这些动态文件不受监视,但因为其内容随时可能发生变化,所以建立恢复指针的时候,在档案文件中,还是需要备份这些文件的。这些不被监视的文件或文件夹的名称都列本文在后面。监视程序将监视结果保存在自动建立的恢复指针中。恢复指针文件或者说储存监视结果的是一个后缀名为.XML的文件。你要了解基于浏览器页面编程的知识,对于为什么微软会采用XML文件的恢复指针,当不难理解。

  一旦需要恢复操作,系统将取得完整的、经过“注册”的系统“快照”和一些动态的系统文件作为恢复的依据。这就是恢复指针的用途。要恢复系统,必须先找到上述的XML文件,找到XML文件后,再依据监视文件产生恢复文件。这也相当于将监视文件转换为恢复文件。选择恢复指针,并取得指针处的文件状态。它将取代当前注册的文件"映像",并将诸如安全参数、动态权限以及证明信息拷贝至恢复的注册表中。监视程序设有注册功能,注册是自动完成的,只要将当前的恢复指针与当前映像进行对比,从两者的差异中就可以判别出系统是否已经进行过恢复操作。当然,这仅仅是很简略的叙述,实际情况需要考虑很多细节,但这不是我们讨论的范围。

2.恢复指针的建立:

  系统恢复指针虽然是自动建立的,但也需要有外界事件触发,触发事件可以是时间(例如默认以每一天为一个周期),也可以是下面的某个事件:

  (1)进行了安装应用程序的操作:这很容易理解,因为这属于系统中发生的重大改变。倘若应用程序利用了先前的安装,系统恢复将恢复相应的PT。API . 万一因为应用程序导致操作系统受到损害,就可以利用这时建立的恢复指针将系统恢复到原来的状态。

  (2)自动更新安装:这大概与微软的反盗版措施和在线服务有关,windows xp在还是测试版本的时候,就提供有自动更新服务,你只要下载了自动更新的内容,在有机会的时候就可以对你的操作系统进行更新。

  (3)恢复操作或撤销:如果在某一次,一个不老练的用户偶然使用了不正确的恢复指针,使自己的系统进入了非预定的状态,你也不用惊慌,只需要你再次选择(这次可要细心了)最新的恢复指针,就可以恢复原状,也即回到某一次之前的状态。这类似很多应用软件(如Office的编辑工具)中的撤销和恢复功能。在你进行了一步错误操作之后,给你一次悔改的机会!

  (4)备份与恢复工具运行:这里所说的恢复是指早期意义上的(例如dos时代)恢复。并不是特指系统恢复。当Microsoft Backup Utility Recovery运行的时候,也可以触发建立恢复指针。以防万一备份与恢复程序丢失或取消系统原先的状态,利用这时建立的恢复指针就可以救急。

  (5)安装设备驱动程序:当安装设备驱动程序时,安装程序必然要探测windows 的INF文件。这也可以触发建立恢复指针。这主要提防那些不兼容的驱动程序,倘若安装上去不能工作或反而有害于操作系统,就可依据恢复指针使破镜重圆。稍后会讲到驱动程序"反转",说的就是这个问题。

  (6)手工建立恢复指针:在任何时间,用户都可自己以手工建立并命名恢复指针。所以等不及自动建立而手工建立恢复指针的原因,可能是下面要进行比较危险的操作,用此留个退路。也可能是下一步要进行系统优化的尝试,怕万一优化结果不理想时退回原处等等。

TOP


3.设置(预定)恢复指针的建立时间:

  系统允许用户通过一个界面来设置建立恢复指针的时间间隔或其它的细节。这也是利用一个对话框实现的。这是个双重作用的设置界面,用户可设定建立恢复指针的相关参数,也可选定调用哪个恢复指针,用于恢复系统的操作。应当说明,非手工建立恢复指针,往往由系统根据情况来决定何时产生该指针文件:主要依据机器是否有空闲时间而定,空闲时间是指:没有鼠标和键盘操作,且各个驱动器都没有数据存取操作。使用这种方案,可以防止建立恢复指针文件与用户争用机器的问题。对NTFS分区的磁盘,系统恢复指针的档案文件是被压缩了的。对于其它分区格式的情况,本人还没有找到具体说法。

4.恢复指针的保存:

  在系统恢复程序执行过程中,它首先取得注册表以及那些关键的动态数据的"映像"(也叫快照),并将这些"安排"到恢复指针的日志文件中,此后将一些必要的数据(例如注册表)拷贝到档案文件中。日志文件中主要是"映像"类的数据,随着时间的推移,档案文件中会聚集越来越多的恢复指针,每个恢复指针都对应于系统在不同时刻的状态。但也不能无限制地任其多下去,这就用上前面提到的滚动更新了。但具体到一台机器中,保留多少个恢复指针之后才开始滚动更新?这取决于用户的设置和可利用的磁盘空间。保留的个数也应当可以设置或调整。

  档案文件中还有恢复指针存放的位置信息,这样,当用户打开系统恢复对话框(恢复界面)的时候,不仅可以看到每个恢复指针建立的时间,也可以看到文件存放的具体位置。一般地,如果用系统默认状态,存放档案文件的是一个被隐藏的系统目录。这也是对指针文件的保护措施之一,另一措施是,如果硬盘使用的是NTFS文件格式,档案文件就被置于了ACL的保护系统中。ACL是一个对访问规定权限的系统。访问者没有相应的权限,就不能访问某些文件。

7.系统与应用程序文件变化的监视

  当你要恢复系统或个人数据时,以什么为凭据选择一个指针呢?原来,负责系统恢复的程序会搜集应用程序文件的变化和系统的关键部位的变化,恢复指针将来要以这些特定事件和指针产生的时间作为关联的依据。由于系统的关键部位变化和应用程序文件的变化是随时都在发生着,哪些变化信息是有用的?哪些变化信息是可废弃不用的?这需要有个"管事"的程序来进行"过滤",这个过滤程序是内核一级的程序,它负责监视系统文件的操作过程,然后对挑选的文件类型进行操作,它可以赶在某个命令执行之前,快速中断文件的操作进行保存文件或它自己认为有用的信息。例如,当用户要删除一个文件时,肯定被监视程序发觉,它于是先将这个文件建立好恢复的信息,甚至进行备份。然后才执行删除操作。这些恢复信息大致有:文件名称,存放的位置,文件大小等等,有些信息是存放在日志文件中的,有些是存入档案文件的。

8.恢复操作:

  随着用户使用计算机时间的延续,系统已经为你准备好了很多可供使用的恢复指针,如果希望进行恢复操作,需要打开恢复界面使用恢复向导功能进行引导,打开的界面上会显示出所有可用的恢复指针,你可以选择其中的任何一个,然后,就可以将这个指针的代表的状态恢复到你的计算机上。一旦指定好恢复指针并开始启动恢复过程,就开始了恢复服务,首先访问录有系统变化的日志文件,并根据日志文件生成恢复"图纸",再依据图纸上的内容逐项恢复原来的内容,当图纸上应有所操作进行完毕,系统自动进行重启,并以恢复后的注册表将原来的取代。完成全部的恢复过程。如果恢复后不满意,还可以再倒回来。

TOP


9.关于利用最后一次正确设置:

  上面介绍适用于系统能正确引导、能正常工作的情况。如果系统已经不能引导,也谈不上使用恢复指针调用恢复程序了。这需要先解决可引导问题。在windows2000中有个最后一次正确设置,开机按F8,在可采用的启动选项中就有这一条。在windows xp中,这一招仍然管用。对windows的引导过程,起重要作用的是注册表中相应的子键和键值。最后一次正确设置,采用的是上次正常引导系统时的注册表键值。因为这些键值是被系统特意加以保护的。用户可以从一个被称为"恢复控制台"的界面选择系统恢复,通常是先进入安全模式或保护模式。然后再选择进入最后一次正确设置。

  也许是恢复控制台属于比在windows xp更早的程序,在恢复控制台中是不可以使用windows xp的恢复指针的,同时,监视程序也不跟踪恢复控制台环境的变化。因此,与此相关的系统改变也就没有恢复指针,当然也就享受不到恢复原状的服务。

  在利用最后一次正确设置恢复一个系统的操作中,恢复程序将确保注册表的内容与当前的机器状态保持相容,也就是说,确保机器环境系统的结构与注册表绝对一致。如果系统一旦恢复到安全模式或正常模式,恢复程序将捕捉系统以前的最佳状态信息。

10.设备驱动程序反转:

  当一个设备驱动程序不是经数字签名的程序时,可能使对应设备不能正常工作,也可能会危及操作系统,遇到这种情况,windows xp可提供驱动程序反转功能。为了叙述方便,本节中所说的设备驱动程序,一般都是指没有经数字签名的设备驱动程序。驱动程序引起的故障情况,可以分成以下几种:

  1. 由于添加了新的设备,需要相应的驱动程序,并且不能保证该驱动程序经过了数字签名。
  2. 已经有驱动程序,但在驱动程序升级的时候遇到了问题。
  3. 老版本的操作系统和相应的驱动程序能正常工作,在操作系统升级过程中发现驱动程序版本太老。

  在windows2000时代,发现驱动程序与自身不兼容的时候,会发出提示并指出:即使与目前的系统不兼容但仍能使用该驱动程序。这已经有了反转的雏形。(但我实际的验证并不是这样,现在我的这台机器上用的就是windows2000,声卡有点老,驱动程序死活不能用)
在windows xp中,如果确认设备驱动程序不能用,可以返回到原来安装的版本中去。就可以继续使用这个系统设备。这个机制实现的原理如下:

  系统恢复程序在监视整个系统的时候,也同样监视设备安装状态。在安装设备驱动程序的过程中,将使系统的这些部位发生改变:1.添加INF文件,你在安装驱动程序的时候不难发现这个文件。2.增加注册表中的相应键名和键值。3.系统在使用设备时真正要读取的、与设备硬件打交道的文件。在这三部分中,前两个部分是用于管理方面的,第三部分才是真正使用的。 另一方面,在windows xp中,为了与以前的版本进行兼容,许多部件都采用了并行共享技术,并行共享技术实现的手段之一,是对作用相同的部件,保留多个版本,以分别适用于不同的场合。

TOP


  例如,假设用户安装了一个新的设备驱动程序,必将触发负责系统监视的程序自动建立恢复指针,然后用户改变他自己的桌面外观和拨号网络的设置。但随之发现经历这种改变之后,系统的性能下降了。这可能就是遇到了不兼容的驱动程序,即怀疑新增的驱动程序是导致系统行为不正常的根源,于是,可利用恢复程序将系统再恢复至未安装驱动程序之前的状态,同时,恢复指针也随之指向原来的状态。但桌面显示外观和拨号网络的设置可能无法恢复。即使对于刚刚安装好的设备驱动程序来说,如果驱动程序反转功能的选项不可用,系统恢复也可以将用户环境恢复之相对的最佳状态。无论如何,驱动程序反转功能提供了一种新的、兼容老版本驱动程序的手段。对于安装的设备驱动程序已经通过数字签名的情况,系统就不再建立恢复指针。虽然这一过程并没有建立恢复指针,但这仍然不影响系统恢复功能,为什么呢?因为早已存在多个恢复指针,即使这次未建立,使用比这次早的一个指针仍然可以进行系统恢复。总之,无论驱动程序反转或不反转,系统恢复程序总是可用的。总是保留有距离安装驱动程序之前最近的一个恢复指针。

  利用驱动程序反转功能重新安装先前驱动程序的时候。系统恢复也将复原反转程序的.INF缓冲区.利用这个措施可以将上次复原后不理想的状态再倒退回去。你可以先临时丢弃设备功能,利用驱动程序反转重新安装老版本的驱动程序,恢复指针也随着复原为未安装之前的状态。

  如果你虽然已经确定安装的驱动程序是问题的根源,但仍然希望保留在安装后的系统变化,就应当尝试利用驱动程序反转首先安装先前版本的驱动程序并使用另一个恢复指针恢复系统。

11.系统备份%26amp;恢复程序

  Backup 和Restore在dos命令中就有了,这是一对需要配合使用的程序,Backup 用来备份文件,Restore负责恢复备份文件,关于备份和恢复程序,有工作在dos环境下的和工作在windows环境下的,这里当然是指windows环境下的,其功用和操作早已经有许多资料介绍,这里就不重述了。注意这里的恢复和上面介绍的系统恢复含义不相同。但你应注意:备份操作,尤其是恢复操作,需要将恢复的文件写在磁盘的一个区域,这势必要改动原有的文件目录管理信息,这样一来,也会触发系统恢复程序的监视功能,以建立新的恢复指针。当然,你要愿意,也可以自己手工建立恢复指针。这种情况下的恢复指针可以在恢复文件失败时,用来恢复系统。

12.系统自动恢复

  先解释这里说的系统恢复与上面的系统恢复有何不同:

  1. 上面说介绍的系统恢复需要用户干预才能完成,而(ASR)却是自动进行的.
  2. 上面的依靠的是恢复指针,这里是基于备份恢复功能。

  (ASR)是英文Automated System Recovery的缩写。这实际是将原来的备%26amp;份恢复功能进行了扩充,万一遇到系统"灾难"或硬件失效,Automated System Recovery 可以利用两个步骤恢复目标系统:第一个步骤是引导期间的恢复,主要恢复系统的引导功能,完成所谓"系统自举",说白了,就是先把系统捣鼓得能够自己启动成功!这需要启动盘或windows xp原始发行的媒体介质。第二步:系统可以引导之后,调用系统的恢复功能,利用ASR应用程序原来备份的文件恢复系统文件,包括删除的文件和被恢复引导覆盖失去的文件。

  其实,在以前的windows版本中,利用启动盘修复系统使之可以引导已为大家所熟悉,可作为第一步;引导成功后,用系统文件检查器来检查和恢复系统文件是第二步,不同的是,在ASR中,第二步用的是原来准备好的备份文件。所以,真正自动的步骤是将原来备份的文件恢复到指定位置,建立可引导则非人工进行操作不可!透过现象看本质,堪称新瓶装旧酒,说透了,也就不新鲜了。

13.恢复指针文件中规定的文件扩展名


  为了便于管理恢复文件,微软在windows xp的恢复文件列表中引入了XML,XML文件中列出有许多类型的文件扩展名(后缀),这些扩展名就是监视程序使用的"名单索引",凡是具有名单索引中列出的扩展名的文件都在监视之列。因而,这些扩展名不能随意改变。微软也不支持用户对扩展名进行改变。由于这些扩展名实在太多,占据篇幅很大,所以不便列在本文中。 

TOP


附录:关于不被监视的文件和目录:

  凡是不被监视的文件或目录都是哪些在建立恢复指针或恢复系统过程中不涉及的部分。上面已经介绍过。这些部分的列表如下:
不予监视的文件:
%windir%\system.ini
%windir%\tasks\desktop.ini
%windir%\win.ini
*:\AUTOEXEC.BAT
*:\CONFIG.MSI
*:\CONFIG.SYS
不予监视的目录:
%cookies%
%favorites%
%History%
%internetcache%
%nethood%
%personaldocuments%
%ProgramFiles%\WindowsUpdate
%windir%\Downloaded Program Files
%windir%\Offline Web Pages
%windir%\PCHealth\HelpCtr\Config
%windir%\PCHealth\HelpCtr\Database
%windir%\PCHealth\HelpCtr\DataColl
%windir%\PCHealth\HelpCtr\System
%windir%\PCHealth\HelpCtr\Vendors
%windir%\prefetch
%windir%\temp
*:\"MSSETUP.T
*:\$WIN_NT$."LS
*:\$WIN_NT$."BT
*:\System Volume Information
*:\SIS Common Store
*:\TEMP
*:\TMP
*:\W95UNDO.INI
*:\W98UNDO.INI
*:\W9XUNDO.INI
*:\WININST0.400
*:\WINLFN.INI
*:\WINUNDO.INI

  上面这些东西基本都来源于微软公开的英文资料,因windows xp还没有正式发行,难以预料上面内容与将来的实际有多大出入。如果哪位朋友有更新近的的消息,请互通有无,共同探索。

TOP

发新话题