1. 程式人生 > >給winpe新增explorer教程(下):Explorer的完善設定與其他討論

給winpe新增explorer教程(下):Explorer的完善設定與其他討論

6 winpe執行explorer的初步完善.

6.1 win7主題的啟用

6.1.1 找到正在執行的win7登錄檔HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\services下面,匯出與win7相關的幾項DXGKrnl, monitor,Schedule,Themes,UxSms和vga.載入D:\TEMP\winpe3.1\org\mount\Windows\System32\config下system檔案到登錄檔,並命名為pe-sys.把剛才匯出的win7的那6項服務匯入到pe-sys下\ControlSet001\services中.

6.1.2 在pe-sys的\Setup\AllowStart\中新增項Themes.

6.1.3 這是唯一需要檔案修改與新增的地方. 參見http://bbs.wuyou.com/viewthread.php?tid=167092用hex編輯器開啟winlogo.exe,查詢4D0069006E0069004E005400 最後兩位改為01即可. 下載ux.exe,在執行explorer前執行此小程式即可.

6.2 桌面背景的應用

6.2.1 找到登錄檔HKEY_LOCAL_MACHINE\System\ControlSet001\Control\ProductOptions,匯出,並匯入到pe-sys的ControlSet001\Control\ProductOptions下.

6.2.2 在pe-sys下\ControlSet001\Control\Lsa新增”LmCompatibilityLevel”=dword:00000002

6.2.3 找到你正在執行的win7登錄檔 HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer 下,匯出 Advanced,Personalization和HideDesktopIcons備用;匯出HKEY_CURRENT_USER\Software\Microsoft\Windows\DWM 備用.

6.2.4 載入D:\TEMP\winpe3.1\org\mount\Windows\System32\config下default檔案到登錄檔,並命名為pe-def.把6.2.3步驟中的4項修改路徑後匯入pe-def.

好了,現在winpe已經能很好地執行explorer了.

7 通過winpe自帶的幾個小程式實現一些常用功能.

7.1 驅動的載入程式—Drvload.exe

經常有人問該怎麼加入驅動,準備好你的驅動檔案,看了下面圖片你就清楚了,格式就是drvload (inf檔案路徑)

7.2 winpe的初始化設定—Wpeinit.exe

首先你得建立一個應答檔案,開啟Windows系統映像管理器,想偷懶的可以直接以win7的安裝檔案基礎,開啟安裝盤source資料夾下install_windows 7 ultimate.clg.

再新建應答檔案,傳送Components中的Microsoft-Windows-Setup到pe,在這裡可以設定螢幕解析度,計算機名,頁面檔案等等,刪掉不需要的部分,儲存為init.xml

呼叫如下:

wpeinit.exe /unattend=X:\Users\Default\Documents\init.xml

7.3 winpe工具—Wpeutil.exe

這個工具非常實用,大家可以參看WAIK的幫助檔案.如果不用第三方程式,pe的關機和重啟就是通過它實現的.下面列了幾個有用的

wpeutil shutdown 關機 wpeutil reboot 重啟
wpeutil CreatePageFile /path=C:\pagefile.sys。設定虛擬記憶體
wpeutil DisableFirewall 開關防火牆 (Enablefirewall)

7.4 explorer的自動載入—Winpeshl.exe

比如,我們可以讓winpe自動載入explorer並啟用主題,修改D:\TEMP\winpe3.1\org\mount\Windows\System32\winpeshl.ini 中內容為:

[LaunchApps]
wpeinit.exe /unattend=X:\Users\Default\Documents\init.xml
ux.exe
X:\windows\explorer.exe

沒有應答檔案直接執行wpeinit.exe.當然,還可以載入更多的程式,一行一行的新增就行了.

8 使用windows的其他功能和設定

8.1 windows程式的新增

由於我們直接使用了修改的win7的software註冊單元,其他功能的新增就很簡單了.基本不用改登錄檔,直接複製檔案就是了.

8.1.1 比如要加入ie8,就複製Program Files\Internet Explorer下所有檔案(以及system32資料夾下相關檔案)到D:\TEMP\winpe3.1\org\mount\Program Files下即可.注意這是64位ie,你要願意,也可以Program Files(x86)下的32位ie.

8.1.2 同理,要使用windows的檢視圖片功能,複製Windows Photo Viewer即可,其他類似.

8.1.3 要用控制面板,控制檯,複製相應的cpl和mmc檔案,要使winpe支援.net framework, 複製win7的的assembly和Microsoft.NET放進去就可以了(同時支援v2.0,v3.0和v3.5會很大,不知道網上有沒有精簡的)

8.1.4 64位winpe的32位程式支援(WOW64)同樣不需要配置登錄檔,拷貝syswow64以及system32下的wow相關檔案就可以了,注意,要支援多少wow64程式取決於你拷貝syswow64資料夾中的檔案.道理很簡單,和system32中的一樣,你不復制mfc.dll不會對你的pe有影響,但是那樣你就不能支援需要這個dll的程式.

8.2 windows服務的新增.

winpe不能安裝msi格式的安裝包,我們以給winpe新增msi服務為例,新增其他服務類似.

8.2.1 確認檔案複製完整後,把載入win7安裝檔案的system配置單元到登錄檔並命名為pe-sys.找到下面的ControlSet001\services\msiserver 全部匯出備用. 解除安裝pe-sys.

8.2.2 載入winpe的system配置單元(:\TEMP\winpe3.1\org\mount\Windows\System32\config下system檔案)到登錄檔並命名為pe-sys,匯入剛才匯出的msiserver即可.

8.3 windows的一些設定

winpe的default單元主要對應windows的HKEY_CURRENT_USER,software單元對應HKEY_LOCAL_MACHINE\SOFTWARE,system單元對應HKEY_LOCAL_MACHINE\SYSTEM
所以你要設定計算機名,桌面圖片,oem資訊和圖片,隱藏夾顯示與否,開始選單,工作列,桌面什麼的全在這裡,位置和專案與windows的類似,網上很多了,就不說了.

8.4 微軟拼音的新增: 檔案很大,不推薦,我就不寫了,真的想要可以看waik的幫助檔案,很簡單,批處理都給你寫好了.

9 一些需要注意的一些地方和其他程式的加入

9.1 計算機管理管理不能在”我的電腦”上用右鍵開啟,載入pe登錄檔software單元,修改Classes\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\Manage\command,為 X:\System32\mmc.exe /b

9.2 “關機”按鈕無效,可以改software單元的Microsoft\Windows\CurrentVersion\Policies\Explorer 新增 “NoClose”=dword:00000001 或0 移出或顯示”關機”按鈕

9.3 如果你不新增,桌面右鍵選單”小工具”很難看,可以去掉,同樣,刪除 \Classes\Directory\Background\shellex\ContextMenuHandlers\Gadgets 和 Classes\DesktopBackground\Shell\Gadgets 即可

9.4 使用者資料夾的更改,預設在config資料夾下,建議改到X:\Users\Default下,可在Microsoft\Windows NT\CurrentVersion\ProfileList\S-1-5-18 下修改.

9.5 MSDaRT工具的加入,可以用7zip開啟MSDaRT65_x64.msi檔案,提取其中的tools.cab和Sweeper.cab中mount資料夾合併到pe即可(32位類似).

9.6 其他綠色程式的加入與快捷方式等
如果檔案不大,可以直接放到program files 目錄下並和wim檔案一起打包.你也可以單列出來放到光碟上,或是打包成新的wim檔案,進入pe後再掛載.桌面快捷方式在\Users\Default\Desktop .鎖定到工作列快捷方式在\Users\Default\AppData\Roaming\Microsoft\Internet Explorer\Quick Launch\User Pinned\TaskBar, 另外還需要匯入default單元的 \Software\Microsoft\Windows\CurrentVersion\Explorer\Taskband 項.

9.7 整合第三方程式
同理,我在8.3中已講了登錄檔的對應,照著新增就是了.可以用登錄檔工具分別掃描安裝程式前後的登錄檔,提取需要寫入的鍵值(相對於檔案加入操作,這種登錄檔操作麻煩多了).

10 有關winpe的一些討論

10.1 winpe的和盤與啟動
這個已經討論很多了,分離式和盤就不說了,網上的和盤模板也很多.其實我們可以整合到安裝盤的source\boot.wim檔案中,此檔案分兩段,一段pe,一段setup(注意一個wim檔案只能有一個/boot的單元啟動).整合後可以更省空間.另外,32位和64位win7可以放到一起,還可以加入2008,xp等,具體可以參考我在vista早期的文章,http://www.wingwy.com/archives/2008_07_139.html .原理類似, 直接操作install.wim檔案就可以了,這個方法理論上可以安裝32位和64位的xp,vista,win7和2008(R2).

10.2 關於winpe其他檔案和驅動的加入以及精簡

大家注意到,用微軟自帶的winpeshl.exe載入explorer關機按鈕無效.如果需要,可以使用pecmd,相關討論參見http://bbs.wuyou.com/viewthread.php?tid=144701 pecmd有自己的一套東西,超作起來會方便一些,大家可以根據需求與喜好用pecmd替換掉winpeshl,並寫入pe登錄檔software單元中的CmdLine.

驅動可以加入windows/inf下面,也可以外接,你要什麼就加什麼,對於不需要某些驅動的人,多的驅動反而要精簡掉.所以我覺得驅動這個東西還是自己加比較好.

winpe的精簡我曾粗略的討論了一下http://www.wingwy.com/archives/2010_08_697.html檔案大小與功能總是矛盾的.比如字型檔案,原版的中文winpe3.1字型檔案很大,其中mingliu.ttc有31M,網上也有號稱完美精簡的字型,用了後文件是小了,但有些程式總是亂碼,或是對不齊.其實這個”完美精簡”只是在特定的條件下,用(或不用)特定的程式才能實現.你可以反過來想一想,如果真的能”完美”,微軟何必要把它做到31M再留給你精簡?(還有shell32.dll等也類似) 再如,msyh.ttf也有21M,砍掉後就沒啟動動畫了.當然其他一些字型或是檔案確實用不上(如其他語言的nls,mui檔案),或者你用的那些程式都用不上這些東西,完全可以刪除.

結語:好了,我寫的”給winpe新增explorer教程”到此結束.裡面的東西都很基本,也肯定有很多不準確的地方,做出來的pe也是很粗燥.其實用winbuilder一類的工具完全可以輕易,快速的做出來.不過我這個和它不一樣的就是,它是在pe的基礎上增加,我是在win7的功能上減少. 眾口難調,各有所愛,別人的pe再好,對於你不一定好,一個適合自己pe才是最好的.希望此文能對大家作pe有所幫助,願大家都能做出自己滿意的winpe.