Sysprep手工封装

来源:互联网 发布:淘宝手机秒杀是真的吗 编辑:程序博客网 时间:2024/04/29 18:23
 http://bbs.povop.com/read.php?tid=12036

本文尽量舍去了那些抽象的字眼,取而代之的是通俗易懂的词汇,旨在向大家表达手工封装的方法和基本原理操作流程,希望大家能全部看完。

我们先来看一个原版sysprep.inf文件的内容如下:

[Unattended]
   OemSkipEula=Yes
   OemPreinstall=Yes
   DriverSigningPolicy=Ignore
  
[GuiUnattended]
   AdminPassword=*
   EncryptedAdminPassword=NO
   OEMSkipRegional=1
   TimeZone=210
;定义是否使用欢迎页面
   OemSkipWelcome=1
[UserData]
   ProductKey=MRX3F-47B9T-2487J-KWKMF-RPWBY
   FullName="微软用户"
   OrgName="微软中国"
   ComputerName=*
[RegionalSettings]
   LanguageGroup=10
[Identification]
   JoinWorkgroup=WORKGROUP
[Networking]
   InstallDefaultComponents=Yes

我们在上面这个sysperp.inf 文件的尾部中加入如下字段

[Sysprep]

BuildMassStorageSection = Yes

[SysprepMassStorage]

修改完毕后的文件如下:

[Unattended]
   OemSkipEula=Yes
   OemPreinstall=Yes
   DriverSigningPolicy=Ignore
  
[GuiUnattended]
   AdminPassword=*
   EncryptedAdminPassword=NO
   OEMSkipRegional=1
   TimeZone=210
;定义是否使用欢迎页面
   OemSkipWelcome=1
[UserData]
   ProductKey=MRX3F-47B9T-2487J-KWKMF-RPWBY
   FullName="微软用户"
   OrgName="微软中国"
   ComputerName=*
[RegionalSettings]
   LanguageGroup=10
[Identification]
   JoinWorkgroup=WORKGROUP
[Networking]
   InstallDefaultComponents=Yes

[Sysprep]
BuildMassStorageSection = Yes
[SysprepMassStorage]



然后手工运行,即在命令提示符状态下输入

Sysprep -bmsd 命令将得到

如下的sysprep.inf的内容:

;SetupMgrTag
[Unattended]
     OemSkipEula=Yes
     OemPreinstall=Yes
     DriverSigningPolicy=Ignore
     UpdateInstalledDrivers=Yes
    
[GuiUnattended]
     AdminPassword=*
     EncryptedAdminPassword=NO
     OEMSkipRegional=1
     TimeZone=210
     OemSkipWelcome=1
[UserData]
     ProductKey=F4297-RCWJP-P482C-YY23Y-XH8W3
     FullName="研究僧人"
     OrgName="系统大玩家"
     ComputerName=*
[RegionalSettings]
     LanguageGroup=10
[Identification]
     JoinWorkgroup=WORKGROUP
[Networking]
     InstallDefaultComponents=Yes

[Sysprep]

BuildMassStorageSection=Yes

[SysprepMassStorage]
*pnp0a00=c:/windows/inf/machine.inf
*pnp0a01=c:/windows/inf/machine.inf
*pnp0a04=c:/windows/inf/machine.inf
..

大家可以在上面这个sysprep.inf文件中看到,已经自动得到了[SysprepMassStorage]段下面的所有内容,这时您可能会有两个疑问。

疑问1:可能您要说:“大把内容我们看不懂啊?”


深度空间说的精彩:“看不懂好正常啊,没必要看明白,了解原理足矣!其实这些就是硬件ID,XP系统就是通过注册表来读取这些硬件ID以完成串行硬件设备也就是非即插即用型设备正确加载。”

疑问2:也许您又要问:“这些信息都在sysprep.inf文件里啊,难道这样就能被XP加载了吗?”
答:“当然不行,这只是为即将开始的加载做一个准备工作,真正的加载到注册表里还得靠sysprep封装来完成,下面我们将详细的介绍一下。”

现在切入正题。。。。
由于我们并不需要以手动方式在 [SysprepMassStorage] 部分中创建项目(这有别于很多其他论坛都是介绍如何手工加载的),
简单操作流程:
只需要把

[Sysprep]

BuildMassStorageSection = Yes

[SysprepMassStorage]

部分写在 Sysprep.inf 文件的尾部,运行Sysprep -bmsd之后,sysprep就能自动地根据 Machine.inf、Scsi.inf、Pnpsci.inf 和 Mshdc.inf 中指定的即插即用硬件 ID(我们常说的串行驱动硬件ID) 自动生成 [SysprepMassStorage] 部分中的所有项目,这时封装前的准备工作已经基本完成。
^_^,其实您根本不用去了解硬件ID,sysprep会为您自动准备这些内容,看不懂,完全没关系。
然后进行正常封装系统即:

sysprep.exe -mini -noreboot -nosidgen -quiet -reseal

sysprep将花去30分钟左右的时间去读取 Sysprep.inf 文件的 [SysprepMassStorage]段下的所有内容,并且同时将大量存储设备信息写入注册表。下一次计算机启动后,所有的大量存储控制器便可用了。恭喜您!也就是说可以正确的加载串行驱动和阵列驱动了!这个30分钟的过程大家将看到一个小沙漏不断的在屏幕上翻滚^_^,这个过程就是微软的封装程序在后台一条一条的写注册表呢!当您度过了漫长的30分钟的封装过程后,又会得到一个跟上面有所不同的sysprep.inf文件, 大家可以发现sysprep.inf的最下边又多出了一段[sysprepcleanup] ,其实在我们早前的普通封装后也可以发现有这么一段,但是[sysprepcleanup] 下面是空的,并无任何信息。当然现在可大不同了,微软封装自然不会是吃素滴![sysprepcleanup]段下面出现了几十条信息,这些信息就是sysprep提供给大家用来清理串行驱动用滴!

疑问3:为什么要清理?怎么清理呢?我不清理会怎么样?
答:问得好,因为计算机加载了大量的串行驱动注册表信息,虽然这些串行驱动和注册表信息都是微软提供给大家滴,一般不容易出现兼容性问题,但是全部加载它们会造成计算机启动变慢,因而可能会增加计算机的启动时间,影响使用者的心情,最明显的特征就是滚动条滚动次数变多了,所以研究僧人强烈建议大家,清理掉,我们可以在mini setup 过程中注册组件的时候运行 Sysprep -clean 命令,Sysprep -clean 命令会根据sysprep.inf文件里面[sysprepcleanup] 段下的内容,把不需要加载的也就是多余的串行驱动注册表信息彻底的清理掉,大家应该知道一台机器上不可能同时出现那么多的串行硬件设备。而且,微软的白皮书中提到这种清理技术产生错误的可能很小。(看见这句话,无异于给我们吃了一颗定心丸^_^)

通过秋天和研究僧人的多次分析判断和广泛测试,我们对这个清理很有把握,而且清理的速度也很快,(在注册组件那里最多就是1-2秒的时间搞定)清理过程可以说是100%的全自动智能清理,清理完毕后您机器上存在的串行设备驱动和信息会被保留,没有的则会被清理掉,难道您还有理由拒绝使用吗?

大家可以仔细看下面这个sysprep.inf的内容:

[Unattended]
   OemSkipEula=Yes
   OemPreinstall=Yes
   DriverSigningPolicy=Ignore
  
[GuiUnattended]
   AdminPassword=*
   EncryptedAdminPassword=NO
   OEMSkipRegional=1
   TimeZone=210
;定义是否使用欢迎页面
   OemSkipWelcome=1
[UserData]
   ProductKey=MRX3F-47B9T-2487J-KWKMF-RPWBY
   FullName="微软用户"
   OrgName="微软中国"
   ComputerName=bule
[RegionalSettings]
   LanguageGroup=10
[Identification]
   JoinWorkgroup=WORKGROUP
[Networking]
   InstallDefaultComponents=Yes

[Sysprep]
BuildMassStorageSection = Yes
[SysprepMassStorage]

*pnp0a00=c:/windows/inf/machine.inf
*pnp0a01=c:/windows/inf/machine.inf
...

[sysprepcleanup]
Service=isapnp
Service=pci
...


至此我们已经说完了关于微软封装清理的大部分要点,此种封装方法,源自微软白皮书,秋天和我只是把这些内容和方法尽量以通俗易懂的形式告诉大家(老秋的创造力是无限滴,每次都能发现一点好东西^_^),完全把白皮书上的内容搬下来给大家看实在有违系统大玩家的宗旨,我们希望人人都可以把系统封装当成一种娱乐,尽情玩一把。

后话:
这种封装方式完全颠覆了传统的封装概念,既不同于S&R&S,也与很多手工加载方法不一样,其实大家细心一点可以发现一张上海VLK或者说电脑疯子原版系统的兼容性也是很不错滴,大部分机器还是可以正常引导安装滴,所以说这种封装方式照理论上来说就能达到这个效果,当然,不否认有一小部分机器是必须加载第三方厂商提供的串行驱动才能被正确安装滴。

研究僧人,秋天,深度空间,也都做过很多测试,0518 与 系统大玩家 的很多作品都用到了这个技术。当然,话说回来,如果没有各位善良滴,可爱滴,细心滴网友们的测试和反馈o(∩_∩)o,我们也不可能从中吸取经验来完善这项工作。就更没有今天我们这个长篇大论了(其实写得蛮烂滴,但是研究僧人觉得如果您仔细的看完了,还是能看得明白滴^_^),也许这个教程会动了不少封装高手们怀中滴小乳饼哈,但是我们觉得其实封装的过程并不仅仅是这些,还有很多细节上的工作要靠自己手工去完成,这样才能享受到封装的乐趣,为什么会有那么多的第三方辅助封装小工具诞生?因为大家都在寻找捷径。让更多人去了解封装才是根本!