一种可保留更新数据的系统还原方法

文档序号:6597515阅读:148来源:国知局
专利名称:一种可保留更新数据的系统还原方法
技术领域
本发明涉及计算机技术领域,尤其涉及一种系统还原方法,在进行系统还原时可
以保留更新的数据。
背景技术
在学校机房或网吧等公共场所,一般一台电脑都是分时段的提供给多个用户使 用,这种方案优势明显,但在实际运作中也存在着不足,其中一个较明显的问题是,当上一 个用户有意或无意(误操作/中病毒等)修改了系统的文件或配置,则就可能直接影响了 后面用户的正常使用。为解决这一问题,比较典型的解决方案就是安装硬盘还原卡,这样只 要通过一次重启,软件系统就恢复到原来的状态。 —般还原方法的实现原理(如图l),主要是截获对磁盘的写操作,再将该写操作 区间重定向到空闲区间进行写入,同时记录该写操作区间与重定向区间的对应关系,最后 完成该写操作。当截获到读磁盘操作时,则结合已记录的重定向区间的对应关系,进行判断 处理,如该读操作区间与已记录的重定向对应关系中的区间无交集,则按正常读流程执行 读操作,最后完成该读操作;如有上述两区间有交集,则可先按正常读流程读取非交集区间 的内容,再结合重定向区间的对应关系,读取被重定向的该交集区间的内容,在合并两种读 操作的读取的内容后,最后完成该读操作。结合上述还原程序对读写的处理,还原程序只要 在系统重启后,清空上次重定向区间的对应关系及重定向区间所占用的空间,就可使软件 系统恢复到原来的状态,到达还原的目的。 但随着计算机的发展,当软件也变得需要时常更新时,这在安装了类似还原卡等 具有还原功能的计算机上进行维护就变得很麻烦,一般都需要管理员先使用管理员权限将 计算机切换到非还原状态,再重启系统,再安装或更新软件,再设置为还原状态,再取消管 理员权限,然后再重启系统。显然,以类似这种方式维护几十台甚至几百台计算机是非常低 效的。

发明内容
本发明的目的就在于提供一种在实现还原功能的基础上,可以对软件系统进行安 全可控更新的方法。 —种可保留更新数据的系统还原方法,包括如下步骤
步骤(一 ) a)在磁盘中指定用于重定向的预留空间; b)在磁盘或内存中指定用于记录对应关系的第一空间; c)生成用于更新数据的私有接口 ; 所述的在磁盘中指定预留空间可以是在启动操作系统之前就已经预先完成划分;
也可以是启动操作系统后,再向操作系统申请预留空间。 指定预留空间之后,用户所有的读、写操作均直接针对非预留空间,而不能直接针对所述的预留空间。
步骤(二) 截获上层软件对磁盘的读、写操作,对截获到的读、写操作进行如下处理
关于写操作 a)如果该写操作不是通过私有接口发起的,则将该写操作所针对的原磁盘空间重 定向到步骤(一)所述的预留空间,即将该写操作所涉及的数据写入预留空间;
并将该写操作所针对的原磁盘空间与实际写入的预留空间的对应关系记录到所 述的第一空间中;也可以说该写操作所针对的原磁盘空间已被重定向。 b)如果该写操作是通过私有接口发起的,按正常的写操作流程,不经过重定向处
理而直接进行写入操作。 关于读操作 a)如果该读操作是通过私有接口发起的,则按正常的读操作流程,不经过重定向 处理而直接进行读取操作; b)如果该读操作不是通过私有接口发起的,则结合第一区间中记录的对应关系, 进行如下判断 如该读操作所针对的区间与参照区间无交集,则按正常读流程执行读操作,最后 完成该读操作; 如该读操作所针对的区间与参照区间有交集,则对于非交集区间的内容按正常读 流程读取;对于交集区间的内容,根据该交集区间与预留空间的对应关系,从预留空间中读 取相对应的内容;最后将读取的非交集区间的内容和交集区间的内容合并,完成该读操作; 在读取非交集区间和交集区间的内容时并没有严格的先后顺序要求,可以如下三种情况
①先将非交集区间的内容A和交集区间的内容B均按正常流程从非预留空间中读 取,再从预留空间中读取与交集区间相对应的内容B—,然后用从预留空间中读取的交集区 间的内容把从非预留空间中读取的交集区间的内容B覆盖,构成完整的内容AB—。
②先将非交集区间的内容A按正常流程从非预留空间中读取,再从预留空间中读 取与交集区间相对应的内容B—,经合并后构成完整的内容AB—。 ③先从预留空间中读取与交集区间相对应的内容B—,再将非交集区间的内容A按 正常流程从非预留空间中读取,经合并后构成完整的内容AB—。 所述的参照区间是在写操作过程中经过重定向且记录第一区间中的所有区间。
步骤(三) 进行系统还原时,清空用于记录对应关系的第一空间中的内容; 若所述的预留空间是启动操作系统后,再向操作系统申请的,则释放该预留空
间; 若所述的预留空间是在启动操作系统之前就已经预先完成划分,则无需进行操 作。 需要说明的是,本发明方法进行系统还原时,清空第一空间以及有选择的释放预 留空间的过程是在重启操作系统进入用户登录界面之前已经完成,这一点是与现有技术相 同的。例如关机时就会清空第一空间,而重启操作系统时完成有选择的释放预留空间。
由于需要更新的数据的读、写都是通过私有接口发起的,所以都会在磁盘中保留,
4即使进行系统还原时,也不会被清除。 本发明在现有技术中系统还原方法的基础上,再加一个安全可控的私有接口 ,提 供给上层管理程序使用,当截获到是通过该私有接口 ,对磁盘进行读写操作时,就不经过重 定向而直接对该区域进行读写操作,最后完成通过该私有接口的读写操作。这样在系统重 启并进行还原时,通过非私有接口写的内容会被清除,但却保留了通过私有接口更新的内 容,通过这种方式极大的减少了对计算机维护的工作量,同时提供了很高的灵活性。


图1为现有技术中系统还原方法的实现原理的示意图。 图2为本发明的可保留更新数据的系统还原方法的实现原理的示意图。
具体实施例方式
在以下的详细说明中,描述了特定的细节以便提供对本发明全面的理解。然而本 专业的技术人员会认识到,本发明也可以用其它相类似的细节实施。 尽管本发明不限于此,但作为本发明的一个具体的实施例,一种在硬盘中有C/D 两个分区,并在C分区安装了 Windows XP系统,而将D分区作为预留空间使用的情况。
参见图2,通过本发明提供的方法,实施对C分区中A文件的第一个扇区内容(如 原内容全为0xAA)修改的还原,同时保留对C分区中B文件的第一个扇区内容(如原内容 全为0xBB)更新的步骤如下 本发明提供的方法可通过编写还原功能软件来实现,该软件包含一个底层驱动 程序如命名为Driver, sys及一个上层管理程序如命名为Manager, exe,其中的Driver 在初始时通过调用系统函数I oAt tachDe v i ce ,挂接到代表C分区的系统设备\De v i ce \ HarddiskVolumel上,这样该Driver, sys在运行后,就可以截获到系统中对C分区的所在磁 盘区域的读写操作,该Driver, sys对写操作截获的函数接口命名为ProtectWrite,对读操 作操作截获的函数接口命名为ProtectRead,同时再通过调用系统函数IoCreateDevice创 建另一个私有的设备名如命名为M)eviceXPassthruC,给Manager, exe使用,即生成了用于 更新数据的私有接口。 并在该Driver, sys初始运行时申请一部分内存空间,如命名为Map,用于记录重 定向区间对应关系,即为第一空间。 同时从D分区申请一部分磁盘空间,如命名为Sw即,用于保存重定向后操作的内 容,即预留空间。 当用户对A文件的第 一 扇区进行了修改写入操作,如将该扇区的内容全部改 为0x00,此时会被Driver, sys截获,并进入ProtectWrite接口 ,在该接口函数的执行过 程中,先通过调用系统函数ObQueryNameString,得到该写操作发起设备名是\Device\ HarddiskVolumel,可以得知该操作不是通过私有接口发起的,所以将该写操作内容通过调 用系统函数ZwWriteFile写到,前面申请的Swap空间的第一扇区中,完成对其写操作的重 定向,同时在前面申请的M即中,记录该重定向的关系,用于表示A文件的第一扇区被重 定向到了 Swap的第一扇区中,最后完成该写请求;而当用户是通过本发明的软件系统提 供的Manager, exe ,对B文件第 一扇区进行更新 ,如扇区的内容全部改为0xFF,就会通过私有的设备名M)eviceXPassthruC,进行写操作,这样在被Driver, sys捕获,并执行到 ProtectWrite接口时,同样通过调用系统函数ObQueryNameString,但得到该写操作发起 设备名是M)evic^PassthruC,可以得知是通过私有接口发起的操作,这种情况下就直接调 用ZwWriteFile,而不经过重定向,写入到B文件的第一扇区中,完成该通过私有接口的写 请求; 当用户对A文件的第一扇区进行读取操作时,此时会被Driver, sys截获,并进入 ProtectRead接口 ,在该接口函数的执行过程中,将该读操作区间与Map中已有的对应关系 区间做交集,可以发现该读操作区间已被重定向到了 Swap的第一扇区中,依据这个重定向 关系,Driver, sys就可以通过调用系统函数ZwReadFile,从Sw即的第一扇区读取该内容 (全为0x00),完成该读请求;而当读取的是,如A文件的第一及第二两个扇区时,就可以先 直接读取未经过重定向的A文件的第二扇区内容,再读取经过重定向的Sw即第一扇区内 容,在合并两次读取的内容后,最后完成这种读请求;而对于由Manager, exe发起的通过私 有接口进行读取的,则就不经过重定向处理,而在直接进行读取操作后,完成这种读请求;
当系统重启后,还原系统再次运行时,上次申请的M即已在关机时被清空释放,此 时可以再次申请一定的内容空间并同样命名为M即,而对上次申请的Swap空间,可以删除 后再重新申请或直接复用,如用户后面有对A文件的第一扇区进行读操作,此时Map中还没 有该扇区的重定向关系,所以直接通过调用系统函数ZwReadFile,读取A文件的第一扇区 的原内容全为原来的0xAA(而不是上次写的0x00),就达到了还原的目的;而对于B文件的 第一扇区进行读操作,同样,读取该区间的内容,但该区间已经被写过了全0xFF(已不是原 来的OxBB),所以此时读取到的内容就是全OxFF,达到了保留更新的目的。
虽然此处说明描述了本发明的某此特征及一种实现方法,但是对于本专业的技术 人员来说,将会出现许多修改、替换、变化和等效代换。因此,本发明的保护范围由所附的权 利要求的范围为准。
权利要求
一种可保留更新数据的系统还原方法,其特征在于,包括如下步骤步骤(一)a)在磁盘中指定用于重定向的预留空间;b)在磁盘或内存中指定用于记录对应关系的第一空间;c)生成用于更新数据的私有接口;所述的预留空间是在启动操作系统之前就已经预先完成划分,或是启动操作系统后,再向操作系统申请;步骤(二)截获上层软件对磁盘的读、写操作,对截获到的读、写操作进行如下处理关于写操作a)如果该写操作不是通过私有接口发起的,则将该写操作所针对的原磁盘空间重定向到步骤(一)所述的预留空间;b)如果该写操作是通过私有接口发起的,直接进行写入操作;关于读操作a)如果该读操作是通过私有接口发起的,直接进行读取操作;b)如果该读操作不是通过私有接口发起的,进行如下判断如该读操作所针对的区间与参照区间无交集,则直接进行读操作;如该读操作所针对的区间与参照区间有交集,则对于非交集区间的内容直接进行读操作;对于交集区间的内容,根据该交集区间与预留空间的对应关系,从预留空间中读取相对应的内容;最后将读取的非交集区间的内容和交集区间的内容合并,完成该读操作;所述的参照区间是在写操作过程中经过重定向且记录第一区间中的所有区间;步骤(三)进行系统还原时,清空用于记录对应关系的第一空间中的内容;若所述的预留空间是启动操作系统后,再向操作系统申请的,则释放该预留空间。
2. 如权利要求l所述的可保留更新数据的系统还原方法,其特征在于,在步骤(二)的 读操作的b)中,先将非交集区间的内容A和交集区间的内容B从非预留空间中读取,再从 预留空间中读取与交集区间相对应的内容B—,然后用从预留空间中读取的交集区间的内容把从非预留空间中读取的交集区间的内容B覆盖,构成完整的内容AB—。
3. 如权利要求l所述的可保留更新数据的系统还原方法,其特征在于,在步骤(二)的 读操作的b)中,先将非交集区间的内容A从非预留空间中读取,再从预留空间中读取与交 集区间相对应的内容,经合并后构成完整的内容AB—。
4. 如权利要求l所述的可保留更新数据的系统还原方法,其特征在于,在步骤(二)的 读操作的b)中,先从预留空间中读取与交集区间相对应的内容B—,再将非交集区间的内容 A从非预留空间中读取,经合并后构成完整的内容AB—。
全文摘要
本发明公开了一种可保留更新数据的系统还原方法,包括在磁盘中指定用于重定向的预留空间;在磁盘或内存中指定用于记录对应关系的第一空间;生成用于更新数据的私有接口;截获上层软件对磁盘的读、写操作,对截获到的读、写操作是否是通过私有接口发起的而分别进行处理。本发明在现有技术中系统还原方法的基础上,再加一个安全可控的私有接口,提供给上层管理程序使用,当截获到是通过该私有接口,对磁盘进行读写操作时,就不经过重定向而直接对该区域进行读写操作,最后完成通过该私有接口的读写操作。这样在系统重启并进行还原时,通过非私有接口写的内容会被清除,但却保留了通过私有接口更新的内容。
文档编号G06F11/14GK101727367SQ201010040009
公开日2010年6月9日 申请日期2010年1月18日 优先权日2010年1月18日
发明者程琛, 蒋关平 申请人:杭州顺网科技股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1