上一篇文章是重头戏,所以这一篇就没什么好说的了……
计算机类型自动检测的实现
上一篇文章中提到在Microsof Windows企业工具部署指南中的一段话:
要将 Sysprep 作为磁盘复制过程的一部分使用,必须符合以下要求:
主安装和目标计算机必须有兼容的硬件抽象层 (HAL)。例如,HAL APIC 和 HAL MP(多处理器系统)是兼容的,但 HAL PIC(可编程中断控制器)与 HAL APIC 或 HAL MP 不兼容。
但是随着ACPI选择器的出现,这句话应该改成: 主安装和目标计算机不必有兼容的硬件抽象层 (HAL)。
我十分佩服万能Ghost XP制作探索者和ACPI选择器制作与改进者们的创新精神,他们留给我的宝贵资料让我少走了许多弯路。
现在对上篇文章所提到的内容做一次方法总结:
1. 全新安装系统,系统文件夹默认为C:|\windows
2. 放入New Setup XP Disk用I386\winnt32 /unattend: I386\winnt.sif /noreboot /makelocalsource进行安装,路径自己补上
其中winnt.sif必须是可以用于完全无人职守安装的,并在winnt.sif中设置安装目的地为非windows目录,比如Benjamin
3. 精简上一步复制到硬盘的New Setup XP Disk
4. 按普通方法重新封装XP,并在注册表里设置自动检测计算机类型的批处理在你想要它运行的时候运行。
这样做的结果:
1.重启后先进入硬盘上被精简的New Setup XP安装,安装过程中会把对应的HAL文件改名复制到\Benjamin\system32,文件名为hal.dll
2.第1步完成后重启,想办法让它进入Ghost XP的安装,最后通过\Benjamin\system32\hal.dll来判断计算机类型,并执行相应的操作。
上篇文章中,一些细节的处理我并没有提到,比如Text Mode Setup 完成后安装程序会改写Boot.ini 让\Benjamin下的系统变成默认启动系统,这样就不能在重启后自动进入Ghost XP的安装
接下来介绍如何检测:
这是我的方法,但可能不是最好的方法,仅供参考
用到的工具
FC:命令行下用于比较两个文件不同之处的工具,存在于\windows\system32\下
仅此一个工具,而且还是系统自带的。用FC把上篇文章中所提到的各种硬件抽象层 (HAL)既hal.dll、halacpi.dll、halapic.dll halmps.dll、halsp.dll、halaacpi.dll、halmacpi.dll和\Benjamin\system32\hal.dll逐个对比,找到相同的文件就在当前的系统中执行相应的操作。