Windows 7 部署过程中的一些控制 - 图文

更新时间:2023-11-06 19:36:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

Windows 7 部署过程中的一些控制

本文地址http://zxkh19501.blog.163.com/blog/static/12378517920126271147583/ (教程中批处理内容差不多都是用蓝色表示的,但要替换的批处理段落通常是用绿色来表示。复制或转载,有可能导致颜色变化,读者无法辨别哪些是需要替换的,哪些不需要替换。请保留本文原址,以便查询)

所谓“部署过程中的一些控制”是指Win7安装过程中添加驱动、启用Administrator、OEM自动识别与激活、注册表修改等等。

制作多合一的WIM一般是这样的过程。

第一步,封装一个有补丁和IE9的WIM出来,这个教程的讲的就是这一过程:http://zxkh19501.blog.163.com/blog/static/1237851792012635360717/,此时我们获得一个WIM文件,x64ult.wim。言下之意,封装出来的这个是旗舰版的WIM文件,里面只有一个卷映像,这个卷映像中没有任何OEM资料,需要自行激活。在OEM合集中通常被称为“Retail”。

如果想略过这一步,你可以提取出来官方原版64位的旗舰版出来。具体操作是将install.wim提取到某分区(虚拟光驱动也可以行,路径稍有不同),然后执行IMAGEX命令:imagex /export H:\\install.wim 4 H:\\x64ult.wim

第二步,以“Retail” 为基础,通过添加不同的OEM资料,在Wim文件中增加卷映像,形成多个OEM版本,类似33in1这样的合集。制作方法参考:

http://zxkh19501.blog.163.com/blog/static/1237851792012612114029919/。

但为什么添加了OEM资料包后就可以启用Administrator,就可以直接登录桌面,就可以自动识别OEM信息自动激活,就可以右键增加“记事本打开”等选项呢?这就是Win7安装过程中的个人DIY要控制的一些内容。这个中间环节以前一直没细说,因为大家都是用现成的OEM资料包就可以。今天补上这一些环节,但可能也不会全,比如OEM主题订制、OOBE.CMD中的OEM自动识别等还涉及不到(有空再说),但会讲到大家很关心的驱动包调用及外置接口的使用原理以及启用Administrator等问题。

你现有使用的操作系统最好是Win7(或R2),然后备一张带有X64\\X86的PE光盘,这样可以通吃X86和X64的Win7。如果虚拟机里有Win7也是可行的,比如现有操作系统是64位的,虚拟机里是32位的WIN7,有时候需要到32位WIN7中去执行一些批处理。一般来说你要处理X86的WIM,最好是在X86的环境中,这方面DISM命令比较挑剔,IMAGEX

相对自由些。

一、驱动包调用及外置接口的使用原理

驱动包调用分两种:一是安装过程中,二是安装结束后首次进入桌面时。 1、安装过程中调用驱动包的实现

我们拿刚封装出来的x64ult.wim为例,此时,WIM中只有一个“Retail”版本。WIM复制一份作为备份,以防制作过程中没处理好。在H分区建一个文件夹(举例:mywim),将x64ult.wim移进来。执行IMAGEX命令行,将x64ult.wim 挂载到H:\\mywim\\Temp_wim目录下。

MD H:\\mywim\\Temp_wim

imagex /info H:\\mywim\\x64ult.wim 1 “Windows 7 旗舰版 64位 [Retail]\旗舰版\

imagex /mountrw H:\\mywim\\x64ult.wim 1 H:\\mywim\\Temp_wim copy H:\\mywim\\Temp_wim\\windows\\system32\\config\\system H:\\mywim pause

如果没有异常,关闭批处理窗口。此时一个名为“system“的文件(无后缀名)被复制到mywim目录下。这是x64ult.wim中的注册表文件之一。下面要对其进行修改,添加安装过程中调用驱动包的命令。

Windows键+R键,运行“regedit”,调出现在系统的注册表,点击一下

“HKEY_LOCAL_MACHINE”,“文件”处选“加载配置单元”,打开前面复制出来的名叫“system“的文件,会让你命名,如X64WIN7,随意取吧。

如上图,你需要修改X64win7中setup里边的Cmdline的值,这里我们举例是个CMD文件,这个文件必须放在WIM中的windows\\system32目录下。Dep.cmd的内容如下:

@echo off

if exist \ Start /wait %SystemDrive%\\Drv\\Drv.exe )

Start /wait %SystemRoot%\\System32\\oobe\\windeploy.exe

命令的主要内容是,如果存在驱动包的执行文件(Drv.exe)就调用,如果没有就略过。你不一定非得用CMD文件这种形式,也可以用AU3编写个EXE文件,以免安装时弹出个批处理的框框不好看。也可以下载我做好的DepX64.exe、DepX86.exe(附件下载 ),一个用于64位,一个用于32位,如果用这两个文件之一,修改Cmdline的值就不是改成Dep.cmd,而是改为DepX64.exe,或DepX86.exe。或者别人的你不一定放心,你自己做一个,给个AU3代码你自己看。

_Windows_X64() Exit

Func _Windows_X64()

Local $SystemDrive = EnvGet(\ If FileExists($SystemDrive & \ RunWait($SystemDrive & \

RunWait($SystemDrive & \ Else

RunWait($SystemDrive & \ EndIf EndFunc

都改好之后,点一下“X64WIN7”,“文件”处“卸载配置单元”,这样,mywim目录下的“system”文件就保存了修改的注册表信息。将“system”文件复制到

H:\\mywim\\Temp_wim\\windows\\system32\\config目录下,替换旧的,将Dep.cmd复制到H:\\mywim\\Temp_wim\\windows\\system32目录下。

(如果你不想再对WIM进行什么修改,直接看本文的第四部分) 2、进入桌面调用驱动包的实现

安装结束后首次进入桌面,如果运行一次某个批处理或EXE文件,通常是预先在注册表里加上Runonce(只运行一次)命令,而不是用Run命令,因为RUN命令每次登录桌面都会运行,你需要删除注册表键值才不会每次如此。 如何预先在注册表中加入Runonce命令,后面我们会讲到。这里先说一下,首次进入桌面后用到的批处理文件,主要用于清理系统安装完成后产生的多余文件,以及调用驱动包(绿色字部分)等等。 假定这个批处理文件叫End.cmd,添加卷映像时把它放在H:\\mywim\\Temp_wim\\windows\\setup目录下。批处理文件的内容如下:

@Echo Off COLOR 2F echo 关闭休眠功能

%windir%\\system32\\powercfg.exe -h off >nul

echo 清理安装过程的临时文件

IF EXIST \ IF EXIST \/S %Systemroot%\\Setup\\OEMFILES

IF EXIST \ IF EXIST \\

IF EXIST \

attrib -R -A -S -H %windir%\\Setup\\Scripts\\*.* >nul rd /q /s %windir%\\Setup\\Scripts >nul )

IF EXIST \

attrib -R -A -S -H %windir%\\Panther\%unattend.xml >nul del /q /f %windir%\\Panther\%unattend.xml >nul )

echo 调用驱动包中的EXE文件(如果有) IF EXIST \ start %SystemDrive%\\Drv\\Drv.exe ) del %0

说明:用上“IF EXIST”的意思是,如果指定目录有Drv.exe,那么就运行Drv.exe,如果不存在,则略过,运行下一行(段)命令。这个End.CMD用于桌面调用驱动包的,不会删除系统分区的下Drv和Drivers目录,你要自己手动处理。如果要用于安装过程中调用驱动包的版本,那么上述绿色字部分替换成下面那样:

IF EXIST \

attrib -R -A -S -H %windir%\\System32\\DepX64.exe >nul del /q /f %windir%\\System32\\DepX64.exe >nul )

IF EXIST \

attrib -R -A -S -H %windir%\\System32\\DepX86.exe >nul del /q /f %windir%\\System32\\DepX86.exe >nul )

IF EXIST \ IF EXIST \ .

二、激活内置管理员Administrator

先下载个示例材料($OEM$文件夹,附件),$$目录是与上述的WIM挂载目录H:\\mywim\\Temp_wim中的windows目录相对应,复制时,就是将$$目录的所有文件夹复制到wiindows目录下。

$OEM$\\$$\\Panther中有个unattend.xml文件,系统安装时会自动调用这个XML文件。XML的格式是一段前行与后行对称,在一行中也是头与尾对称。格式不能出错,你可以用AIK中的“Windows 系统映像管理器”来验证格式。

示例材料是用于简体中文X64(64位)。如果用于简体中文X86(32位),要将$OEM$\\$$\\Panther中的unattend.xml文件中的几处\改为\(用记事本打开即可修改)

如果你需要部署过程中增加一段(或多段)命令来运行CMD文件(或EXE文件)。如下图,复制命令段落并相应修改,添加一段来执行Add.cmd(举例的名字)的命令段落。比如,通过Add.cmd来执行一些常用运行库的安装等等。

settings pass=\表示部署过程中要执行的一些处置,可以加载CMD或EXE

文件,以及进行一些系统设置。

settings pass=\表示在登录前要执行的一些处置,可以加载CMD或EXE文件,以及进行一些系统设置。

示例材料中,我们让安装程序在specialize阶段执行一个ActAdmin.cmd文件,激活内置管理员帐号,所以不应当在登录前才处理的。这个CMD文件放在Setup目录下(其实示例中提到的CMD文件,REG文件都我都放在这个目录下)。

ActAdmin.cmd文件具体内容: @Echo Off COLOR 2F

net user Administrator /active:yes net user Administrator_ploc /active:yes

reg add HKLM\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Policies\\System /v FilterAdministratorToken /t REG_DWORD /d 0 /f

del %0

这样,我们通过unattend.xml文件来执行ActAdmin.cmd这个批处理以达到激活内置管理员administrator的目的,为自动登录创造条件。

三、进行一些简单的系统设置订制

如下图,我们将执行下一个名为“MyDiy.cmd”文件,用它来执行一些注册表修改、运行EXE文件等。这个文件也在Setup目录下。

这个CMD文件的内容如下:

::执行一个右键添加“显示隐藏文件与后缀名”的EXE文件:: start /wait %windir%\\Setup\\Hidden.exe >nul ::导入要修改的注册表项::

start /wait regedit /s %windir%\\Setup\\MyDiy.reg >nul del /q /s %windir%\\Setup\\Hidden.exe >nul del /q /s %windir%\\Setup\\MyDiy.reg >nul del %0

MyDiy.reg的内容如下:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\HideDesktopIcons\\NewStartPanel]

;在桌面上显示个人文件夹图标 dword:00000001为不显示 \ ;在桌面上显示计算机图标

\ ;在桌面上显示网络图标

\ [HKEY_CLASSES_ROOT\\*\\shell\\Notepad] @=\用记事本打开该文件\

[HKEY_CLASSES_ROOT\\*\\shell\\Notepad\\Command] @=\ ;开始菜单显示“运行”栏

[HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Advanced]

\

;首次进入桌面运行%windir%\\setup\\end.cmd

[HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\RunOnce]

\\\ 74,00,75,00,70,00,5c,00,45,00,6e,00,64,00,2e,00,63,00,6d,00,64,00,00,00 说明:前面所说的如何在首次进入桌面后调用end.cmd来运行驱动包,就在此时(登录桌面前)写入注册表。如果你是想安装过程中调用驱动的,“首次进入桌面后调用end.cmd来运行驱动包”(绿色字)这一段注册表修改项都删除掉。

四、封装

假定你在第一部分“安装过程中调用驱动包的实现”时,将x64ult.wim挂载到

H:\\mywim\\Temp_wim目录下,也假定你准备好了$OEM$文件夹中的所有材料,那么,复制$OEM$中的$$目录下的所有文件夹到H:\\mywim\\Temp_wim\\Windows目录下,提示合并时就合并(如果你仅仅是修改第一部分的所说的“system“的文件,不想订制别的任何内容,连$OEM$文件夹都不用准备,不需要复制什么)。然后,执行IMAGEX命令。

imagex /commit /append H:\\mywim\\Temp_wim “Windows 7 旗舰版 64位 [MyDiy]\

imagex /unmount H:\\mywim\\Temp_wim PAUSE

到此为止,x64ult.wim中添加了一个新的卷映像(原先的\没有变化),这个新的卷映像我们用“MyDiy”来表示,这个映像能调用安装目录分区下Drv文件夹中的驱动包了。将x64ult.wim改名为install.wim,用ultraiso打开官方原版64位WIN7的ISO文件,将新的install.wim替换进sources目录,然后,在sources目录建立一个$oem$文件夹,下一级再建一个$1文件夹,再下一级再建一个Drv文件夹,将驱动包中的EXE文件及其平行的文件夹一起拖进Drv中,将EXE文件改名为Drv.exe。另存ISO,虚拟机测试一下那个标识有“MyDiy”的那个版本,看看是不是大功告成。

五、其他

示例材料中还有AIDA64、OEMFILES、Scripts文件夹,都是跟OEM自动识别、激活有关的,这里不介绍了(有空再说吧),你照用就是了。因为OEMLOGO图片等文件比较多比较大,示例材料中没有提供,但有提供证书。

真有用到OEMLOGO资料包,比较完整的到这里下载:

http://zxkh19501.blog.163.com/blog/static/12378517920126149350305/。示例材料只是用来教程演示用的。

本文中很多都是用批处理的形式来处理,如果你精通AU3,你都可以将CMD文件变成EXE文件。不过打包成EXE,看起来专业点,但放心度却下降了,起码CMD文件很容易用记事本打开看看,到底是什么东西。闲话。 附件:

示例材料($OEM$文件夹):

http://www.vdisk.cn/down/index/10606684 http://dl.vmall.com/c000mqofbe DepX64.exe、DepX86.exe:

http://www.vdisk.cn/down/index/10603658 http://dl.vmall.com/c0n624bmdw

本文来源:https://www.bwwdw.com/article/bmg2.html

Top