(教程中批處理內(nèi)容差不多都是用藍(lán)色表示的,但要替換的批處理段落通常是用綠色來表示。復(fù)制或轉(zhuǎn)載,有可能導(dǎo)致顏色變化,讀者無法辨別哪些是需要替換的,哪些不需要替換。請保留本文原址,以便查詢)
所謂“部署過程中的一些控制”是指Win7安裝過程中添加驅(qū)動、啟用Administrator、OEM自動識別與激活、注冊表修改等等。
制作多合一的WIM一般是這樣的過程。
第一步,封裝一個有補丁和IE9的WIM出來,這個教程的講的就是這一過程:http://zxkh19501.blog.163.com/blog/static/1237851792012635360717/,此時我們獲得一個WIM文件,x64ult.wim。言下之意,封裝出來的這個是旗艦版的WIM文件,里面只有一個卷映像,這個卷映像中沒有任何OEM資料,需要自行激活。在OEM合集中通常被稱為“Retail”。
如果想略過這一步,你可以提取出來官方原版64位的旗艦版出來。具體操作是將install.wim提取到某分區(qū)(虛擬光驅(qū)動也可以行,路徑稍有不同),然后執(zhí)行IMAGEX命令:imagex /export H:\install.wim 4 H:\x64ult.wim
第二步,以“Retail” 為基礎(chǔ),通過添加不同的OEM資料,在Wim文件中增加卷映像,形成多個OEM版本,類似33in1這樣的合集。制作方法參考:http://zxkh19501.blog.163.com/blog/static/1237851792012612114029919/。
但為什么添加了OEM資料包后就可以啟用Administrator,就可以直接登錄桌面,就可以自動識別OEM信息自動激活,就可以右鍵增加“記事本打開”等選項呢?這就是Win7安裝過程中的個人DIY要控制的一些內(nèi)容。這個中間環(huán)節(jié)以前一直沒細(xì)說,因為大家都是用現(xiàn)成的OEM資料包就可以。今天補上這一些環(huán)節(jié),但可能也不會全,比如OEM主題訂制、OOBE.CMD中的OEM自動識別等還涉及不到(有空再說),但會講到大家很關(guān)心的驅(qū)動包調(diào)用及外置接口的使用原理以及啟用Administrator等問題。
你現(xiàn)有使用的操作系統(tǒng)最好是Win7(或R2),然后備一張帶有X64\X86的PE光盤,這樣可以通吃X86和X64的Win7。如果虛擬機里有Win7也是可行的,比如現(xiàn)有操作系統(tǒng)是64位的,虛擬機里是32位的WIN7,有時候需要到32位WIN7中去執(zhí)行一些批處理。一般來說你要處理X86的WIM,最好是在X86的環(huán)境中,這方面DISM命令比較挑剔,IMAGEX相對自由些。
一、驅(qū)動包調(diào)用及外置接口的使用原理
驅(qū)動包調(diào)用分兩種:一是安裝過程中,二是安裝結(jié)束后首次進入桌面時。
1、安裝過程中調(diào)用驅(qū)動包的實現(xiàn)
我們拿剛封裝出來的x64ult.wim為例,此時,WIM中只有一個“Retail”版本。WIM復(fù)制一份作為備份,以防制作過程中沒處理好。在H分區(qū)建一個文件夾(舉例:mywim),將x64ult.wim移進來。執(zhí)行IMAGEX命令行,將x64ult.wim 掛載到H:\mywim\Temp_wim目錄下。
MD H:\mywim\Temp_wim
imagex /info H:\mywim\x64ult.wim 1 “Windows 7 旗艦版 64位 [Retail]" "Windows 7 旗艦版"
imagex /mountrw H:\mywim\x64ult.wim 1 H:\mywim\Temp_wim
copy H:\mywim\Temp_wim\windows\system32\config\system H:\mywim
pause
如果沒有異常,關(guān)閉批處理窗口。此時一個名為“system“的文件(無后綴名)被復(fù)制到mywim目錄下。這是x64ult.wim中的注冊表文件之一。下面要對其進行修改,添加安裝過程中調(diào)用驅(qū)動包的命令。
Windows鍵+R鍵,運行“regedit”,調(diào)出現(xiàn)在系統(tǒng)的注冊表,點擊一下“HKEY_LOCAL_MACHINE”,“文件”處選“加載配置單元”,打開前面復(fù)制出來的名叫“system“的文件,會讓你命名,如X64WIN7,隨意取吧。
如上圖,你需要修改X64win7中setup里邊的Cmdline的值,這里我們舉例是個CMD文件,這個文件必須放在WIM中的windows\system32目錄下。Dep.cmd的內(nèi)容如下:
@echo off
if exist "%SystemDrive%\Drv\Drv.exe" (
Start /wait %SystemDrive%\Drv\Drv.exe
)
Start /wait %SystemRoot%\System32\oobe\windeploy.exe
命令的主要內(nèi)容是,如果存在驅(qū)動包的執(zhí)行文件(Drv.exe)就調(diào)用,如果沒有就略過。你不一定非得用CMD文件這種形式,也可以用AU3編寫個EXE文件,以免安裝時彈出個批處理的框框不好看。也可以下載我做好的DepX64.exe、DepX86.exe(下載:http://www.vdisk.cn/down/index/10603658 ),一個用于64位,一個用于32位,如果用這兩個文件之一,修改Cmdline的值就不是改成Dep.cmd,而是改為DepX64.exe,或DepX86.exe?;蛘邉e人的你不一定放心,你自己做一個,給個AU3代碼你自己看。
_Windows_X64()
Exit
Func _Windows_X64()
Local $SystemDrive = EnvGet("SystemDrive")
If FileExists($SystemDrive & "\Drv\Drv.exe") Then
RunWait($SystemDrive & "\Drv\Drv.exe")
RunWait($SystemDrive & "\Windows\System32\Oobe\WinDeploy.exe")
Else
RunWait($SystemDrive & "\Windows\System32\Oobe\WinDeploy.exe")
EndIf
EndFunc
都改好之后,點一下“X64WIN7”,“文件”處“卸載配置單元”,這樣,mywim目錄下的“system”文件就保存了修改的注冊表信息。將“system”文件復(fù)制到H:\mywim\Temp_wim\windows\system32\config目錄下,替換舊的,將Dep.cmd復(fù)制到H:\mywim\Temp_wim\windows\system32目錄下。
(如果你不想再對WIM進行什么修改,直接看本文的第四部分)
2、進入桌面調(diào)用驅(qū)動包的實現(xiàn)
安裝結(jié)束后首次進入桌面,如果運行一次某個批處理或EXE文件,通常是預(yù)先在注冊表里加上Runonce(只運行一次)命令,而不是用Run命令,因為RUN命令每次登錄桌面都會運行,你需要刪除注冊表鍵值才不會每次如此。 如何預(yù)先在注冊表中加入Runonce命令,后面我們會講到。這里先說一下,首次進入桌面后用到的批處理文件,主要用于清理系統(tǒng)安裝完成后產(chǎn)生的多余文件,以及調(diào)用驅(qū)動包(綠色字部分)等等。 假定這個批處理文件叫End.cmd,添加卷映像時把它放在H:\mywim\Temp_wim\windows\setup目錄下。批處理文件的內(nèi)容如下:
@Echo Off
COLOR 2F
echo 關(guān)閉休眠功能
%windir%\system32\powercfg.exe -h off >nul
echo 清理安裝過程的臨時文件
IF EXIST "C:\SWTOOLS" RD /Q /S C:\SWTOOLS
IF EXIST "%Systemroot%\Setup\OEMFILES" RD /Q /S %Systemroot%\Setup\OEMFILES
IF EXIST "%Systemroot%\Setup\AIDA64" RD /Q /S %Systemroot%\Setup\AIDA64
IF EXIST "%SYSTEMDRIVE%\AIDA64 REPORTS" RD /Q /S "%SYSTEMDRIVE%\AIDA64 REPORTS"
IF EXIST "%windir%\Setup\Scripts" (
attrib -R -A -S -H %windir%\Setup\Scripts\*.* >nul
rd /q /s %windir%\Setup\Scripts >nul
)
IF EXIST "%windir%\Panther\unattend.xml" (
attrib -R -A -S -H %windir%\Panther\unattend.xml >nul
del /q /f %windir%\Panther\unattend.xml >nul
)
echo 調(diào)用驅(qū)動包中的EXE文件(如果有)
IF EXIST "%SystemDrive%\Drv\Drv.exe" (
start %SystemDrive%\Drv\Drv.exe
)
del %0
說明:用上“IF EXIST”的意思是,如果指定目錄有Drv.exe,那么就運行Drv.exe,如果不存在,則略過,運行下一行(段)命令。這個End.CMD用于桌面調(diào)用驅(qū)動包的,不會刪除系統(tǒng)分區(qū)的下Drv和Drivers目錄,你要自己手動處理。如果要用于安裝過程中調(diào)用驅(qū)動包的版本,那么上述綠色字部分替換成下面那樣:
IF EXIST "%windir%\System32\DepX64.exe" (
attrib -R -A -S -H %windir%\System32\DepX64.exe >nul
del /q /f %windir%\System32\DepX64.exe >nul
)
IF EXIST "%windir%\System32\DepX86.exe" (
attrib -R -A -S -H %windir%\System32\DepX86.exe >nul
del /q /f %windir%\System32\DepX86.exe >nul
)
IF EXIST "%SystemDrive%\Drv" RD /Q /S "%SystemDrive%\Drv
IF EXIST "%SystemDrive%\DrIvers" RD /Q /S "%SystemDrive%\DrIvers
.二、激活內(nèi)置管理員Administrator
先下載個示例材料($OEM$文件夾):http://www.vdisk.cn/down/index/10606684,$$目錄是與上述的WIM掛載目錄H:\mywim\Temp_wim中的windows目錄相對應(yīng),復(fù)制時,就是將$$目錄的所有文件夾復(fù)制到wiindows目錄下。
$OEM$\$$\Panther中有個unattend.xml文件,系統(tǒng)安裝時會自動調(diào)用這個XML文件。XML的格式是一段前行與后行對稱,在一行中也是頭與尾對稱。格式不能出錯,你可以用AIK中的“Windows 系統(tǒng)映像管理器”來驗證格式。
示例材料是用于簡體中文X64(64位)。如果用于簡體中文X86(32位),要將$OEM$\$$\Panther中的unattend.xml文件中的幾處"amd64"改為"x86"(用記事本打開即可修改)
如果你需要部署過程中增加一段(或多段)命令來運行CMD文件(或EXE文件)。如下圖,復(fù)制命令段落并相應(yīng)修改,添加一段來執(zhí)行Add.cmd(舉例的名字)的命令段落。比如,通過Add.cmd來執(zhí)行一些常用運行庫的安裝等等。
settings pass="specialize"表示部署過程中要執(zhí)行的一些處置,可以加載CMD或EXE文件,以及進行一些系統(tǒng)設(shè)置。
settings pass="oobeSystem"表示在登錄前要執(zhí)行的一些處置,可以加載CMD或EXE文件,以及進行一些系統(tǒng)設(shè)置。
示例材料中,我們讓安裝程序在specialize階段執(zhí)行一個ActAdmin.cmd文件,激活內(nèi)置管理員賬號,所以不應(yīng)當(dāng)在登錄前才處理的。這個CMD文件放在Setup目錄下(其實示例中提到的CMD文件,REG文件都我都放在這個目錄下)。
ActAdmin.cmd文件具體內(nèi)容:
@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文件來執(zhí)行ActAdmin.cmd這個批處理以達(dá)到激活內(nèi)置管理員administrator的目的,為自動登錄創(chuàng)造條件。
三、進行一些簡單的系統(tǒng)設(shè)置訂制
如下圖,我們將執(zhí)行下一個名為“MyDiy.cmd”文件,用它來執(zhí)行一些注冊表修改、運行EXE文件等。這個文件也在Setup目錄下。
這個CMD文件的內(nèi)容如下:
::執(zhí)行一個右鍵添加“顯示隱藏文件與后綴名”的EXE文件::
start /wait %windir%\Setup\Hidden.exe >nul
::導(dǎo)入要修改的注冊表項::
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的內(nèi)容如下:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\HideDesktopIcons\NewStartPanel]
;在桌面上顯示個人文件夾圖標(biāo) dword:00000001為不顯示
"{59031a47-3f72-44a7-89c5-5595fe6b30ee}"=dword:00000000
;在桌面上顯示計算機圖標(biāo)
"{20D04FE0-3AEA-1069-A2D8-08002B30309D}"=dword:00000000
;在桌面上顯示網(wǎng)絡(luò)圖標(biāo)
"{F02C1A0D-BE21-4350-88B0-7367FC96EF3C}"=dword:00000000
[HKEY_CLASSES_ROOT\*\shell\Notepad]
@="用記事本打開該文件"
[HKEY_CLASSES_ROOT\*\shell\Notepad\Command]
@="notepad %1"
;開始菜單顯示“運行”欄
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced]
"Start_ShowRun"=dword:00000001
;首次進入桌面運行%windir%\setup\end.cmd
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunOnce]
"aa"=hex(2):25,00,77,00,69,00,6e,00,64,00,69,00,72,00,25,00,5c,00,53,00,65,00,\
74,00,75,00,70,00,5c,00,45,00,6e,00,64,00,2e,00,63,00,6d,00,64,00,00,00
說明:前面所說的如何在首次進入桌面后調(diào)用end.cmd來運行驅(qū)動包,就在此時(登錄桌面前)寫入注冊表。如果你是想安裝過程中調(diào)用驅(qū)動的,“首次進入桌面后調(diào)用end.cmd來運行驅(qū)動包”(綠色字)這一段注冊表修改項都刪除掉。
四、封裝
假定你在第一部分“安裝過程中調(diào)用驅(qū)動包的實現(xiàn)”時,將x64ult.wim掛載到H:\mywim\Temp_wim目錄下,也假定你準(zhǔn)備好了$OEM$文件夾中的所有材料,那么,復(fù)制$OEM$中的$$目錄下的所有文件夾到H:\mywim\Temp_wim\Windows目錄下,提示合并時就合并(如果你僅僅是修改第一部分的所說的“system“的文件,不想訂制別的任何內(nèi)容,連$OEM$文件夾都不用準(zhǔn)備,不需要復(fù)制什么)。然后,執(zhí)行IMAGEX命令。
imagex /commit /append H:\mywim\Temp_wim “Windows 7 旗艦版 64位 [MyDiy]"
imagex /unmount H:\mywim\Temp_wim
PAUSE
到此為止,x64ult.wim中添加了一個新的卷映像(原先的"Retail"沒有變化),這個新的卷映像我們用“MyDiy”來表示,這個映像能調(diào)用安裝目錄分區(qū)下Drv文件夾中的驅(qū)動包了。將x64ult.wim改名為install.wim,用ultraiso打開官方原版64位WIN7的ISO文件,將新的install.wim替換進sources目錄,然后,在sources目錄建立一個$oem$文件夾,下一級再建一個$1文件夾,再下一級再建一個Drv文件夾,將驅(qū)動包中的EXE文件及其平行的文件夾一起拖進Drv中,將EXE文件改名為Drv.exe。另存ISO,虛擬機測試一下那個標(biāo)識有“MyDiy”的那個版本,看看是不是大功告成。
五、其他
示例材料中還有AIDA64、OEMFILES、Scripts文件夾,都是跟OEM自動識別、激活有關(guān)的,這里不介紹了(有空再說吧),你照用就是了。因為OEMLOGO圖片等文件比較多比較大,示例材料中沒有提供,但有提供證書。
真有用到OEMLOGO資料包,比較完整的到這里下載:http://zxkh19501.blog.163.com/blog/static/12378517920126149350305/。示例材料只是用來教程演示用的。
本文中很多都是用批處理的形式來處理,如果你精通AU3,你都可以將CMD文件變成EXE文件。不過打包成EXE,看起來專業(yè)點,但放心度卻下降了,起碼CMD文件很容易用記事本打開