[这个贴子最后由benjaminwan在 2004/05/31 07:44am 第 4 次编辑]
[1]让你的Ghost XP盘更加自动化--自动选择计算机类型原理简述
[2]让你的Ghost XP更加自动化---计算机类型自动检测的实现
[3]让你的Ghost XP更加自动化---dllcache的重建
[4]让你的Ghost XP更加自动化---最后的保护:OOBC
一般情况下,为减少万能Ghost XP的体积,制作时都删除了dllcache下的文件,但这样也破坏了系统的稳定性
曾有人提出,制作一个批处理,在最小化安装的注册组件阶段重建dllcache,但无奈文件太多太分散,不好实现。
但并不是不能实现。
我的实现方法:
1.在重新封装之前用命令dir %systemroot%\system32\dllcache\*.* /a /b> c:\sysprep\file.txt
保存dllcache内的文件列表到文件file.txt,因为操作系统不同,安装的系统组件不同,
dllcache内的文件不相同。
2.然后可以用sfc /purgecache清除dllcache了
3.最后在注册组件阶段用类似如下的命令来复制文件
FOR /F "usebackq" %%i IN (file.txt) DO if exist %systemroot%\%%i copy %systemroot%\%%i %systemroot%\system32\dllcache
这行命令的意思是读取file.txt的每一行并写入变量i中,并为每一行执行一个命令。
例如,file.txt第一行为abc.dll,第二行为efg.dll
那么实际执行时就会变成以下两句
if exist %systemroot%\abc.dll copy %systemroot%\abc.dll %systemroot%\system32\dllcache
if exist %systemroot%\efg.dll copy %systemroot%\efg.dll %systemroot%\system32\dllcache
file.txt内有多少行,就执行多少次命令
所以只要让它为各个不同的目录执行复制就可以了。
不要担心它的执行效率,只要在echo off模式下,速度并不慢,占用的时间大部分是花在复制文件上。
百密必有一疏,虽然这样做比较方便,但总有些文件会漏掉。
我提供的附件里的批处理,也只能恢复大概80%的dllcache内的文件。(在XP下测试)
----------------------------------------------------------------------------------------------------------
上篇文章中曾提到计算机类型的自动检测,其实方法多种多样,这次提供的附件中就附带了用PE来实现自动检测的批处理。
一个方法只有应用到实际中才可以显出其优劣,但你看到的不应该仅仅是它的优劣,而应该明白这个方法所蕴涵的知识。
-------------------------------------------------------------------------------------------------------------
benjaminwan
2004.5.26