传统DllCache恢复和新型DllCache恢复原理
- 时间:2015年04月02日 15:16:59 来源:魔法猪系统重装大师官网 人气:9257
由于DllCache目录中存储有系统文件的备份,总体积大概在200~400M,这给我们封装系统后控制系统映像体积方面制造了障碍,那我们能不能删掉它,并在系统部署时恢复它?为了解决这个问题,“DllCache恢复”应运而生。
1、传统DllCache恢复
前文已述,DllCache存储的是系统文件备份,那么这些系统文件肯定同时也是存在于系统目录中的,这就给了我们一个思路。我们恢复DllCache文件,源文件可以去当前系统寻找,而我们要去寻找哪些文件呢?这就需要我们在清空DllCache目录前记录一下这个目录里有哪些文件就可以了。我举例简单的说明一下:
(1)例如目前DllCache目录里有:a.sys、b.sys、c.dll三个文件,封装时清空DllCache目录前运行一个小程序,将这三个文件的名字记录下来,如记录在一个文本文件里。这个过程即所谓的“DllCache备份”。
(2)系统部署时的一个时机(常用系统部署中,注册组件时),DllCache恢复程序启动,读取(1)过程中用于记录DllCache目录下文件的文本文件,而后去系统目录寻找这些文件,再将找到的文件复制到DllCache目录。
简而言之,在传统DllCache恢复中,“DllCache备份”就是记录DllCache目录下有哪些文件,“DllCache恢复”就是按照记录将系统文件从系统目录复制到DllCache目录下。
2、新型DllCache恢复
这个功能的实现感谢天空曾经的编程大师:七猫(由于工作原因,现已退役)
由于传统的DllCache恢复必须执行“备份-->恢复”的过程,比较繁琐,万一忘记了执行备份过程,那恢复过程就是徒劳。七猫提出了不同的思路,如果能够读取系统函数,直接询问SFC它需要将哪些文件备份到DllCache目录,而后将SFC需要的文件全部复制到DllCache目录,这不是更好吗?这样就根本不需要“备份”过程,而且我们“恢复”出来的文件是SFC所需要的所有的文件。由于系统不同,精简的内容不同,甚至安装的驱动不同,都会造成SFC所需要备份的文件不完全一致,这种询问SFC需求并将需求实现的功能无疑是更加强大且更加完善的!
自由天空DllCacheRecover系列使用的即是七猫的实时询问系统需求并复制文件的原理。无需传统的DllCache备份过程,DllCacheRecover运行时会实时的询问SFC,并将需要的文件自动搜索与复制到DllCache目录。某些系统可能要恢复2000~2500个文件,而某些系统只需要恢复1500~2000个文件,DllCacheRecover都能够根据实际需要进行复制,精确度高,更贴近系统需求,不因额外的文件复制增加时间的消耗