1. 程式人生 > >給winpe新增explorer教程(上):基礎知識及explorer的初步加入

給winpe新增explorer教程(上):基礎知識及explorer的初步加入

前言:雖然有winbuilder一類優秀的製作pe的工具,我還是打算寫一個從WAIK入手,”手工”製作winpe並加入explorer的教程.此教程很基本,分為兩個部分(後加入檔案列表部分,共3部分),前面部分提及winpe及waik的基礎知識,以及用waik新增程式包,通過修改win7sp1安裝檔案中的登錄檔software配置單元實現explorer的初步加入;後面部分介紹explorer的完善和設定,windows功能的新增,以及對winpe精簡和合盤等的一些討論.我寫的這些主要來自於自己做pe的一些積累,waik的幫助檔案和winbuilder的指令碼,另外一些關鍵的問題很多是在wuyou,boot-land等論壇得到解決的,pe檔案的加入部分也參考了很多他人的pe,還有很多問題都是通過google搜尋解決.希望大家在看完本文後也都能做出自己滿意的pe.

下面以64位winpe3.1為例,介紹製作帶explorer的win7pe的操作過程.最終得到一個功能較為全面的winpe,如我的pe3.1, wingwy-pe3.1-v2.iso

注:此文很多是回憶內容,文中難免很多錯誤,歡迎大家指出並討論.

1 winpe和WAIK的一些基本知識

1.1 winpe全稱Windows Preinstallation Environment,中文就是Windows預安裝環境.其他的不用囉嗦,但我覺得有必要先說一下他的版本和名稱問題.

winpe 1.x系列對應windows xp和2003,可以叫xpe,需要注意的是Windows XP Embedded也簡稱xpe,不過在pe領域,xpe應該不具有誤導性.相應的,winpe 2.x系列對應windows vista和2008, 也叫vistape.3.x系列是對應windows 7和2008R2,所以有時也叫win7pe.後面的小標號x則是對應各個sp版本,如某個pe是winpe2.2,即表示對應於vista sp2,目前最新的winpe3.1就是對應於win7 sp1.

1.2 WAIK全稱Windows Automated Installation Kit,意為自動安裝工具包.我們做pe主要用到他的2個工具,imagex和dism. 要製作winpe3.1,目前需同時下載WAIK3.0(KB3AIK_CN.iso 含製作工具,)和3.1的補充包(waik_supplement_zh-cn.iso 含新的wim檔案). 注:以後微軟可能會把這兩個整合到一起.

另外,winpe2.0以後,程式系統和語言包都是分離的,WAIK的語言版本也就不是問題了,各個版本都含有對應的語言包,只需要自己新增就行了. 下面的例子是以中文版為例,其他語言版本也可.

2 準備工作

理想情況下,我建議大家準備好兩個waik的iso檔案和win7sp1的中文版安裝映象.要中文版win7主要是為了讓最後製作出來的帶explorer的winpe完全中文化.

如果你沒有win7sp1中文版安裝iso,只要你的作業系統是win7sp1中文版就可以了(這可以通過安裝中文sp1包升級,我下面的例子就是這樣的).如果這個條件還是不滿足,下載我的pe, wingwy-pe3.1-v2.iso 裡面的檔案基本上就夠了.

其他軟體可以主要是ultraliso和Registry Workshop.

3 winpe的基本製作

WAIK其實提供了快速生成簡單pe的指令碼,不過為了使大家更好的瞭解pe,我們在這裡手動完成.

3.1載入waik_supplement_zh-cn.iso進入amd64資料夾,拷貝boot資料夾bootmgr檔案到 D:\TEMP\winpe3.1\org\win7pe (路徑隨意,以後以這個路徑為例).

3.2拷貝amd64資料夾下winpe.wim到D:\TEMP\winpe3.1\org\win7pe\sources 並改名為boot.wim

3.3用ultraiso開啟win7安裝檔案,提取iso引導資訊檔案備用,比如存為boot.bif.

新建一個啟動光碟,引導檔案用剛才的boot.bif檔案,把D:\TEMP\winpe3.1\org\win7pe\下所有檔案加入這個啟動光碟,儲存稱pe.iso.一個基本的winpe就完成了.用虛擬機器測試一下吧,啟動後就是一個cmd視窗,如下圖

這個pe是最基本的,顯然不好用,我們需要修改boot.wim檔案加入程式包

4 程式包的加入

4.1 載入waik_supplement_zh-cn.iso進入amd64資料夾,拷貝WINPE_FPS到D:\TEMP\winpe3.1\org\win7pe (路徑隨意,以後以這個路徑為例)

4.2 新建資料夾D:\TEMP\winpe3.1\org\mount 在開始選單上開啟Windows AIK中開啟”部署工具命令提示”如下

4.3 展開imagex以供修改,執行如下程式碼:

imagex /apply D:\TEMP\winpe3.1\org\win7pe\sources\boot.wim 1 D:\TEMP\winpe3.1\org\mount

4.4 新增程式包

AIK的說明檔案裡面有詳細介紹,推薦新增以下6個包

WinPE-HTA:HTML 應用程式支援。
WinPE-MDAC:Microsoft(R) 資料訪問元件支援。
WinPE-Scripting:Windows 指令碼主機 (WSH) 支援。
WinPE-WMI:Windows Management Instrumentation (WMI) 支援。

WinPE-PPPoE:啟用乙太網上的點對點協議 (PPPoE) 支援。(如ADSL)
WinPE-DOT3SVC:IEEE 802.X 身份驗證協議支援。(如WiFi)

命令格式如下:

dism /image:D:\TEMP\winpe3.1\org\mount /Add-Package /PackagePath:”D:\TEMP\winpe3.1\org\WINPE_FPS\winpe-wmi.cab”

新增其他程式包格式一樣,只需修改cab檔案路徑,別忘了各個程式包還有相應的_ZH-CN.CAB包.

注:如果是英文版的WAIK,還需要先新增WINPE-FONTSUPPORT-ZH-CN和LP_ZH-CN包,然後設定:

dism /image:D:\TEMP\winpe3.1\org\mount /set-uilang:zh-cn
dism /image:D:\TEMP\winpe3.1\org\mount /set-syslocale:zh-cn
dism /image:D:\TEMP\winpe3.1\org\mount /set-userlocale:zh-cn
dism /image:D:\TEMP\winpe3.1\org\mount /set-inputlocale:0804:00000804
dism /image:D:\TEMP\winpe3.1\org\mount /set-timezone:”China Standard Time”
dism /image:D:\TEMP\winpe3.1\org\mount /set-SKUIntlDefaults:zh-cn

最後刪除英文包:

dism /image:D:\TEMP\winpe3.1\org\mount /Remove-Package /PackageName:Microsoft-Windows-WinPE-LanguagePack-Package~31bf3856ad364e35~amd64~en-US~6.1.7601.17514

5 explorer初步加入winpe

5.1 好了,大家估計都急著讓pe執行explorer了.我們把explorer加入到windows目錄下,執行

imagex /capture /compress fast /boot D:\TEMP\winpe3.1\org\mount D:\TEMP\winpe3.1\org\win7pe\sources\boot.wim “winpe” “winpe”

重新打包boot.wim,並替換掉pe.iso中的boot.wim,儲存後放入vm測試.在啟動後還是一個cmd視窗.直接輸入explorer.exe,你看到了什麼? 系統提示缺少ExplorerFrame.dll.

顯然,單獨加入explorer.exe是不行的.簡單的說windows系統程式的正常執行至少要滿足兩點,一個是相關的支援檔案出現在正確的路徑中(如各個dll檔案和mui檔案等),另外一個就是正確的登錄檔配置(程式執行的設定和支援檔案的路徑等).

好,明白了這個,一切就很清晰了,基本的explorer執行並不需要任何第三方程式的加入或是對微軟的檔案進行任何修改.只要添加了支援explorer執行的檔案,配置好了登錄檔,就可以在winpe中正常執行explorer了.

5.2 其中檔案的加入部分我這裡不想細講,因為它既繁瑣又簡單,意義不大.為什麼呢?你執行程式,它提示你少什麼檔案,你加入就是了.如果你有耐心,可以一個一個加(當然,有時候他並不會提示你缺少某個檔案,而explorer還是不能執行).檔案的加入相對於登錄檔的是顯而易見的,即使是才接觸計算機的網友,只要他會複製和貼上就沒問題.另外,你還可以用滑鼠右鍵看檔案說明。

其實pe的製作就是不斷地積累,吸收前人的經驗,我更喜歡先對比別人的pe,看看別人都加了些什麼檔案,換一個思路,先新增足夠的檔案,執行起了explorer後再刪除. 因此我建議你直接把我的wingwy-pe3.1-v2.iso中winpe.wim檔案展開. 同時展開win7sp1的install.wim檔案,依照我我的pe檔案列表複製win7的安裝檔案到你要做的pe目錄,D:\TEMP\winpe3.1\org\mount 下.(實現此步有很多辦法,比如用xcpoy帶/s /h /d /y 引數). 實在不行就直接複製我pe展開的檔案,注意不要替換檔案.

5.3 好了,該動pe的登錄檔了,注意D:\TEMP\winpe3.1\org\mount\Windows\System32\config 下的三個檔案 software, system 和 default . 用登錄檔編輯器載入software單元,命名為pe-soft全部匯出為soft-init.reg後,解除安裝pe-soft配置單元.

5.3.1 開啟win7sp1的install.wim檔案(可以用7-zip,用imagex展開也可),定位到Windows\System32\config下,把software檔案載入到登錄檔,同命名為pe-soft. 一會兒你會遇到許可權問題,可先在”許可權”-“高階”中替換”所有者”為你當前使用者.再在”許可權”中新增好許可權.

5.3.2 在pe-soft下搜尋Interactive User,找到後全部刪除.

5.3.3 在pe-soft下搜尋D:\ 全部替換為X:\

5.3.4 匯入剛才的soft-init.reg替換掉win7安裝檔案的,解除安裝pe-soft

5.4 用imagex打包,生成iso後啟動vm測試.還是命令提示符視窗,不過你現在執行explorer.exe.看看,熟悉的explorer是不是已經出來.


好了explorer已經成功運行了,不過顯然達不到我們要的效果,比如就沒有工作列,沒有桌面,下面就繼續修改登錄檔.

5.5 把工作列和桌面顯示出來

5.5.1 載入pe的software檔案到登錄檔,命名為pe-soft,找到pe-soft下\Microsoft\Windows NT\CurrentVersion\Winlogon下,把”Shell”=”cmd.exe /k start cmd.exe” 改成 “Shell”=”explorer.exe”

5.5.2 找到你正在執行的win7的HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Svchost,匯出全部項並新增到pe-soft下的Microsoft\Windows NT\CurrentVersion\Svchost.(此步驟在這裡似乎不是必須的,不過為了其他功能的正常執行,建議新增)

5.5.3 合併打包測試,再執行explorer,工作列和桌面都出來了(注: 可能有網友會質疑我的wingwy-pe3.1-v2.iso裡含有第三方檔案,不過你可以把它們全部刪除後打包測試,不影響執行explorer,調出工作列和桌面).

至此,我們在不修改原版檔案,不新增第三方檔案的基礎上初步實現了explorer的執行.不過大家也看到,這樣一個pe顯然是不能讓人滿意的,更多的後續設定以及windows功能的新增和討論,請關注 “給winpe新增explorer教程(下):Explorer的完善設定與其他討論