http://bbs.wuyou.com/forum.php?mod=viewthread&tid=273524

 

背景知識

 


1 什麼是 Windows PE?

1.1 簡要介紹
    Windows Preinstallation Environment (Windows PE) 是一個為Windows 安裝而設計的最小操作系統.它可以用於啟動無操作系統的計算機、對硬盤驅動器分區和格式化、複製磁盤映像以及從網絡共享啟動Windows 安裝程序.
    微軟本意是PE 僅作系統維護,並設置了各種限制.可以簡單的理解為: PE 是Windows 系統的超級精簡版,以Wim 的文件形式存在,運行於內存中.特別的,也是最有價值的, PE 以系統system 賬戶登錄,這意味著超級權限!對於安裝系統、無法進入系統、修復系統、分區等問題都可以進入PE進行操作,因此PE是強大的系統維護工具!
    微軟原版的PE ,只有"命令行"窗口.網上流傳的各種版本都是"高手們"修改出來的,甚至有的PE 可以作為系統來使用,這都偏離了微軟的本意.我不主張"肆意擴展" PE 的功能來彰顯"技術",但是"可視化操作界面、常用功能的集成"這些都是必要且必須的.

1.2 版本編號
下面簡要介紹Windows PE 的命名規則[略去Windows Server 2003/2008/2012]:
Windows PE 1.x表示Windows XP內核.
Windows PE 2.x表示Windows Vista內核.
Windows PE 3.x表示Windows 7內核.
Windows PE 4.x表示Windows 8內核.
x表示系統版本,例如SP1(帶有Service Pack 2)
舉例:PE 1.3表示Windows XP SP3內核的PE.


                                                                                                
2 Windows PE 的啟動過程
Windows PE 4.x(3.x 2.x類似)引導過程[略去1.x]:

2.1 詳細過程(微軟ADK/AIK說明文檔):
①Windows PE 在特定媒體上加載啟動扇區.系統將控制傳遞給Bootmgr.Bootmgr 從啟動配置數據(BCD) 中提取基本啟動信息,並將控制傳遞給包含在Boot.wim 文件中的Winload.exe 文件.然後Winload.exe 將加載相應的硬件抽象層(HAL),接著加載系統註冊表配置單元和必要的啟動驅動程序.Winload.exe 完成加載後,將會準備要執行內核Ntoskrnl.exe 的環境.


②該環境將執行Ntoskrnl.exe 文件.然後Ntoskrnl.exe 完成環境設置.系統將控制傳遞給會話管理器(SMSS).


③SMSS 加載註冊表的剩餘部分,然後配置運行Win32 子系統(Win32k.sys) 的環境及其各種進程.SMSS 加載用於創建用戶會話的Winlogon 進程,然後啟動服務和剩餘的非必要設備驅動程序及安全子系統(LSASS).


④Winlogon.exe 根據HKEY_LOCAL_MACHINE\SYSTEM\Setup\CmdLine 註冊表值來運行設置.Winpeshl.exe 將啟動%SYSTEMDRIVE%\sources\setup.exe 文件,前提是該文件存在.如果該文件不存在,Winpeshl.exe 將確定%SYSTEMROOT%\system32\winpeshl.ini 文件是否指定了某個應用程序.如果該文件未指定應用程序,則Winpeshl.exe 將執行cmd /k %SYSTEMROOT%\system32\startnet.cmd 文件.默認情況下,Windows PE 包含啟動Wpeinit.exe 文件的Startnet.cmd 文件.Wpeinit.exe 將加載網絡資源並協調網絡組件(如DHCP).


⑤當Wpeinit.exe 結束時,將會出現命令提示符窗口.當命令提示符窗口出現時,Windows PE 的啟動進程結束.
                                                             
2.2 簡單理解:若為光盤啟動,引導文件(例:pe.bif)——bootmgr——BCD——boot.wim——啟動PE.



3 Windows操作系統的啟動過程
除了了解WinPE的啟動過程,系統的啟動過程也非常重要,可以為將來安裝WinPE到本地系統分區做準備,更重要的是加深對系統維護和裝機的理解.
http://bbs.wuyou.com/viewthread.php?tid=254880&extra=page%3D1



4 如何製作Win8PE,Win7PE

4.1 Windows PE 的來源
①winpe.wim
源自ADK/AIK——被稱為"微軟官方PE",是最為純粹的版本,可以進入CMD操作界面


②winre.wim
<系統安裝光盤或ISO>\Sources\install.wim\Windows\System32\Recovery\winre.wim ——可以進入恢復環境


③boot.wim
<系統安裝光盤或ISO>\Sources\boot.wim——定製版的Windows PE,將啟動setup.exe,執行系統的安裝
重點:以上三個文件有不同用途.但本質上都是PE,均可為我們所用,深度加工,製作更人性化、更符合要求的Windows PE.

4.2 常見的 Windows PE 製作途徑分析
①winpe.wim
可以用來製作ADK/AIK 版winpe ——安裝ADK/AIK時自帶winpe.wim,可利用DISM來添加組件,但最終不會有桌面環境,只有CMD 操作界面.


②winre.wim
可以用來製作Winbuilder 版winpe ——缺少的文件可以直接從install.wim 中拷貝,以獲取需要的功能.
重點:
    由於WinRE.WIM 只比boot.wim 分卷2 多一個winpeshl.ini 文件,故而Winbuilder 大多利用boot.wim 分卷2 ;另外, install.wim 的幾個分卷代表不同的Windows 版本,越往後版本越高,故而拷貝文件的時候選擇最後一個分卷即可.

③boot.wim
boot.wim 中的捲#1 Windows PE 相當於winpe.wim ;卷#2 Windows Setup 相當於winre.wim

4.3 製作Windows PE 的新途徑
    PE是超小型的Windows系統,相關文件以Wim 形式存在,如winpe.wim ,winre.wim ,boot.wim .而install.wim 包含了Windows系統幾乎所有文件(沒有引導類文件),在WinPE中,我們也經常利用它來裝系統.基於這樣的理論,Winbuilder 製作出了出色的Windows PE,並讓它走向了傻瓜式操作.
    但是, ADK/AIK/Winbuilder/MakePE 都沒讓我們學到真正的東西,它究竟是如何做到的呢?有沒有更快更簡單的製作方法呢?答案是肯定的,本帖為此而生. 我將告訴大家如何利用boot.wim鏡像全手工式製作自己的WinPE,讓你做得明明白白,體驗其中的樂趣.有了這個基礎,還可以利用winre.wim 或者winpe.wim來試試,操作差不多,不過要注意一些細節差異.

 

全手工製作Win8PE,Win7PE——系統ISO就是你的WinPE

必備的檔和工具

win7.iso/win8.iso

Windows 系統ISO鏡像

WimTool

BOOT.WIM檔的修改

RegWorkShop

註冊表編輯和分析利器

UltraISO

修改win7.iso/win8.iso

全局注意:
①每次修改註冊表的時候都留心一下:
C:\ D:\ 應改為X:\ ; Interactive User 應全部刪除.

②註冊表技巧,解決註冊表問題途徑:
熟練使用RegWorkShop,RegShot,可配合其他優化軟件靈活使用.

③Windows\System32\config下文件:
SOFTWARE 對應 HKEY_LOCAL_MACHINE\SOFTWARE;
SYSTEM 對應 HKEY_LOCAL_MACHINE\SYSTEM;
DEFAULT 主要對應 HKEY_CURRENT_USER

 

1 準備WinPE本身需要的文件
                           
1.1 下載WIN7.ISO或者WIN8.ISO /* 按需選擇*/
                           
1.2 保留下列文件,其他都刪了/* 只支持BIOS,不想支持UEFI的情況下*/
BOOT\BCD
BOOT\BOOT.SDI
SOURCES\BOOT.WIM
BOOTMGR

 


2 獲取所需文件權限
為了能夠在Win7下順利製作PE,必須獲得相關文件的權限.
                                    
2.1 用WimTool解開BOOT.WIM第一個卷(Windows PE)為BOOT文件夾
                                       
2.2 獲取BOOT文件夾及其子文件的完全控制權
鼠標右鍵BOOT文件夾->屬性->安全選項卡->高級->更改權限->添加->輸入everyone->確定->勾選"完全控制",其他選項會自動勾上->應用於"此文件夾,子文件夾"->確定->刪除Everyone,SYSTEM以外的權限項目->勾選"使用可從此對象繼承的權限替換所有子對象權限"->確定
->所有者選項卡->編輯->其他用戶或組->輸入everyone->確定->勾選"替換子容器和對象的所有者"->確定
[注意:由於文件過多,需要重複執行以下操作幾次:1."使用可從此對象繼承的權限替換所有子對象權限"->確定;2."替換子容器和對象的所有者"->確定]
                                          
2.3 獲取WinPE註冊表的完全控制權
2.3.1 加載註冊表
"運行"->輸入Regedit->加載boot\Windows\System32\config下的DEFAULT,SYSTEM,SOFTWARE分別命名為pe-def,pe-sys,pe-soft
2.3.2 分別對每個加載單元進行如下操作:
右鍵->權限->高級->添加->輸入everyone->確定->勾選"完全控制",其他選項會自動勾上->應用於"此文件夾,子文件夾"->確定->刪除Everyone,SYSTEM以外的權限項目->勾選"使用可從此對象繼承的權限替換所有子對象權限"->確定
->所有者選項卡->編輯->其他用戶或組->輸入everyone->確定->勾選"替換子容器和對象的所有者"->確定
[注意:由於文件過多,需要重複執行以下操作幾次:1."使用可從此對象繼承的權限替換所有子對象權限"->確定;2."替換子容器和對象的所有者"->確定]
——至此,我們就獲得了並統一了WinPE幾乎所有文件的控制權限,後面製作WinPE就非常順利了.
                           

                       
3 註冊表修改
                              
3.1 選中加載的SOFTWARE單元pe-soft
                                             
3.2 修改註冊表中關於路徑的值
在pe-soft下搜索$windows.~bt\ ,替換為(空)
在pe-soft下搜索Interactive User,找到後全部刪除.
[沒有的就不用改了]
                                         
3.3 同理,對pe-def,pe-sys也進行此操作
                             
3.4 卸載pe-def,pe-sys,pe-soft


4 WinPE製作好了!!! 這就是原汁原味的微軟官方WinPE了.

                          
4.1 打包測試
用WimTool把BOOT文件夾新建映像為BOOT.WIM,原版的BOOT.WIM文件可移到他處作為備份,以便隨時還原,保存修改的ISO並測試.
4.1.1 原版的BOOT.WIM啟動效果
/************************************************* ***************************
背景知識:
BOOT.WIM中包含卷#1 Windows PE,卷#2 Windows Setup(Windows PE增強版,用來安裝操作系統的).
由於WIM文件只允許一個卷可啟動,BOOT.WIM真正起作用的是可啟動卷#2 Windows Setup .
卷#2 在卷#1 的基礎上追加了一些安裝相關的文件,專門用來自啟動安裝環境的,它檢測到並啟動了setup.exe.
又因WIM特殊壓縮算法,兩個卷共用文件,不影響體積.
************************************************** **************************/

20130131_965d48d98da0414cd6e2aMBYxipAOdEY  

 

 

4.1.2 WimTool直接解開BOOT.WIM,再打包的啟動效果
/************************************************* ***************************
背景知識:
WimTool 默認解開WIM鏡像的捲#1,即Windows PE,這正是我們需要的.也可採用好壓等工具直接解開卷#1,前提是能打開查看此WIM文件.
此時新建的BOOT.WIM,註冊表相關環境和微軟純粹的WinPE,即winpe.wim還有差別,我們需要做一些工作.
************************************************** **************************/

20130201_09808f4086b38f5b255acVDjgQWgYrHD  

 

 

4.2 必要的精簡
因為BOOT.WIM鏡像原本垃圾文件就多,我們可以適當精簡,便於後面的工作.但也不要過火,以免留下後患.
\Windows\fonts /* 可適度刪除*/
\Windows\winsxs\Backup /* 可以刪除 */
\Windows\System32\zh-TW...zh-HK...uk-UA...sr-Latn-CS...等/* 存放*.dll.mui 的文件夾,僅保留zh-CN,其他都可刪除*/
... ...
附件中有資料,可以參考.

Windows操作系统中文件的功能与作用.zip

 


 

5 添加explorer
                                     
5.1 修改註冊表
5.1.1 加載WinPE的註冊表文件SOFTWARE為pe-soft,然後導出為pe-soft.reg備用
[其實,熟練的話,在前面的步驟就可以導出備用了.]

5.1.2 修改權限[與前面的操作一樣滴]
用WIMTool解壓Win7.iso的install.wim文件中最後一個卷(旗艦版Windows),定位到Windows\System32\config下,把software文件加載到註冊表,命名為pe-soft.
右鍵加載的註冊表單元pe-soft——>"權限"——>"高級"中添加Everyone的完全控制權限,刪掉Everyone和System以外其他用戶權限,然後替換所有子項的權限;
右鍵加載的註冊表單元pe-soft——>"權限"——>"高級"中替換"所有者"為Everyone,然後替換所有子項的所有者.
[注意:請重複幾次——因為文件過多,一次操作可能有遺漏,軟件處理能力有限]

5.1.3 編輯註冊表
在pe-soft下搜索Interactive User,找到後全部刪除.
在pe-soft下搜索C:\ D:\ ,全部替換為X:\
[注意:RegWorkshop每次只能搜索到1000項,而需要替換的有幾千項,需要重複操作幾次.
搜索時請將keys/value/data三項都勾選,搜索結果出現在下面的窗口,在搜索結果窗口中選中所有項,鼠標右鍵→替換或刪除]

5.1.4 得到WinPE的SOFTARE完整註冊表
把之前導出的pe-soft.reg導進來,覆蓋Win7系統的SOFTWARE註冊表加載單元pe-soft
[同名在於確保路徑統一,以覆蓋Win7系統的註冊表]

5.1.5 繼續修改pe-soft
找到pe-soft下\Microsoft\Windows NT\CurrentVersion\Winlogon下,
把"Shell"="cmd.exe /k start cmd.exe" 改成"Shell"="explorer.exe"
然後,卸載pe-soft.
                                     
5.2 準備文件
5.2.1 方案一:精確式
從install.wim中拷貝這些文件到boot.wim中同樣的位置:
=====================================
//進入SHELL需要添加以下文件

Windows\explorer.exe
Windows\zh-CN\explorer.exe.mui
Windows\System32\ExplorerFrame.dll
Windows\System32\zh-CN\explorerframe.dll.mui
Windows\System32\mlang.dll

=====================================

//為了穩定而添加的文件

Windows\System32\actxprxy.dll /*沒有它,會提示"explorer.exe不支持此接口" */
Windows\System32\comctl32.dll
Windows\System32\mscories.dll
Windows\System32\oledlg.dll
Windows\System32\shdocvw.dll
Windows\System32\shellstyle.dll
Windows\System32\zh-CN\comctl32.dll.mui
Windows\System32\zh-CN\oledlg.dll.mui
Windows\System32\zh-CN\shdocvw.dll.mui
Windows\System32\zh-CN\shellstyle.dll.mui


=====================================
//為了美觀而添加的文件——與版權信息,開始菜單按鈕等圖標有關
Windows\Branding\Basebrd\basebrd.dll
Windows\Branding\Basebrd\zh-CN\basebrd.dll.mui
Windows\Branding\ShellBrd\shellbrd.dll
=====================================
[注意:若要拓展功能,可參考附件"Win7PE_X64支持文件列表.zip",不覆蓋式拷貝install.wim 中的文件.若要製作骨頭版WinPE ,反而要開始精簡BOOT.WIM 中原有的文件了.]
                                     
5.2.2 方案二:偷懶式
——大家知道,WinPE的靈魂是註冊表,文件處理方面較為好辦,如有現成的WinPE,可不必大費周章.
                                               
偷懶又保險的方法:
可以直接不覆蓋式拷貝正常WinPE 的Windows 文件夾, winpeshl.ini 不要拷貝!其他文件隨便.
要求不高的,選擇骨頭WinPE ;要求高的,選擇多功能WinPE ;請自行選擇你喜歡的WinPE 作為基礎.
                                                                                                            
5.3 打包測試
通過上面的步驟,我們得到了"史上最完整的"WinPE的SOFTWARE註冊表.
現在,重新打包boot.wim,保存修改後的WinPE的ISO.
啟動VMWare虛擬機測試,還是命令提示符窗口,不過你現在運行explorer.exe.看看,熟悉的explorer是不是已經出來.

20130131_0c07b691c75e8a4985940wR2SCsiCWiZ  

PS. For Windows 8 , copy DartConfig.dat, Explorer.exe, FauxShell.dll, mfc100u.dll, MSDartCmn.dll, msvcp100.dll, msvcr100.dll from system32


 

6 explorer的初步完善
這裡需要利用激活的Win7系統註冊表,導入PE後,相關配置和Windows呈現一樣的效果,所以,請先在Windows下配置好.
處理的註冊表較多,先加載好pe-soft,pe-sys,pe-def.
                                     
6.1 explorer 的個性化設置
6.1.1 Advanced配置
這裡的配置很重要(下面在正運行的Win7中配置好,將來在PE中explorer的特性就與這些配置一樣):
在正在運行的激活的Win7中,打開explorer資源管理器,在菜單→文件夾和搜索選項,在"常規"(General)頁面,勾選"顯示所有文件夾"(Show all folders)和"自動擴展當前文件夾"(Automatically expand to current folder);在"查看"(View)頁面,按你的習慣勾選(如顯示隱藏文件,顯示擴展名等),特別注意:一定要勾選"在單獨進程中打開文件夾窗口"(Launch folder windows in a separate process)(否則PE啟動後再插入U盤,U盤不可見);然後,定位到Win7的HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced,導出為Advanced.REG,用記事本編輯," [HKEY_CURRENT_USER\"全部替換為: " [HKEY_LOCAL_MACHINE\PE- DEF\",再導入PE-DEF.

6.1.2 其他配置
導出Win7系統以下註冊項:
①HKEY_LOCAL_MACHINE\System\ControlSet001\Control\ProductOptions /*壁紙出現了*/
②HKEY_CURRENT_USER\Software\Microsoft\Windows\DWM /* Desktop Window Manager */
③HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Personalization /* 個性化*/
④HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\HideDesktopIcons /*桌面圖標的顯示隱藏:計算機,回收站,用戶的文件,控制面板,網絡*/
用記事本修改①~④導出的.REG文件,路徑分別改為:
①HKEY_LOCAL_MACHINE\pe-sys\ControlSet001\Control\ProductOptions
②HKEY_LOCAL_MACHINE\PE-DEF\Software\Microsoft\Windows\DWM
③HKEY_LOCAL_MACHINE\pe-soft\Microsoft\Windows\CurrentVersion\Personalization
④HKEY_LOCAL_MACHINE\pe-soft\Microsoft\Windows\CurrentVersion\Explorer\HideDesktopIcons
保存修改,全部選中,右鍵"合併",即可覆蓋到PE的註冊表中

6.1.3 顯示我的電腦圖標
在HideDesktopIcons\NewStartPanel下添加:
"{20D04FE0-3AEA-1069-A2D8-08002B30309D}"=dword:00000000

6.1.4 在pe-sys下\ControlSet001\Control\Lsa添加"LmCompatibilityLevel"=dword:00000002
                                     

 

6.2 win7主題的啟用
6.2.1 定位到正在運行的win7註冊表HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\services下面,導出與win7相關的幾項DXGKrnl, monitor,Schedule,Themes,UxSms和vga.
把剛才導出的win7的那6項服務導入到pe-sys下\ControlSet001\services中.

6.2.2 在pe-sys的\Setup\AllowStart\中新建項Themes

6.2.3 這是唯一需要文件修改與添加的地方. 參見http://bbs.wuyou.com/viewthread.php?tid=167092 用hex編輯器打開winlogon.exe,在其中查找unicode字符串minint(可查找十六進制: 4D0069006E0069004E005400),修改其中任一字母,只要和原先不一樣即可,比如,改成minins. 下載ux.exe,在運行explorer前運行此小程序即可啟用Win7的basic主題. http://bbs.wuyou.com/forum.php?mod=attachment&aid=MTU1OTEzfDJkODkxMDAwfDEzNjY4OTQzNjl8MHwyNzM1MjQ%3D
/************************************************* ***************************
背景知識:system用戶下只能啟用basic主題,沒有aero特效.
想要啟用aero特效的朋友,可搜索無憂相關資料,有詳細介紹.不過,本人不建議這麼做,因為PE的SYSTEM權限是它生存的意義所在,為此要繞很多圈子.
************************************************** **************************/

6.2.4 其他需要補充的文件,見附件"Win7PE_X64支持文件列表.zip"

6.2.5 解決X盤的容量過小問題——開啟主題等,需耗費內存,這裡藉機擴充一下
加載註冊表system單元,展開至/ControlSet001/Services/FBWF,新建二進制dword(32位)值,命名為WinPECacheThreshold,修改鍵值為200.(這是512MB,可以根據需要修改鍵值)

6.2.6 卸載PE的所有註冊表加載單元,檢驗效果.

20130205_480271e4d5b97bef505cwqmaDjIRZ6v2  

 


 

7 通過winpe自帶的幾個小程序實現一些常用功能.
                                     
7.1 驅動的加載程序—Drvload.exe
經常有人問該怎麼加入驅動,準備好你的驅動文件,看了下面圖片你就清楚了,格式就是drvload (inf文件路徑)

20130205_0537ec45dd4e35eef8e0mEWZvEeZEPKO  

 

7.2 winpe工具—Wpeutil.exe
這個工具非常實用,大家可以參看WAIK的幫助文件.如果不用第三方程序,pe的關機和重啟就是通過它實現的.下面列了幾個有用的
wpeutil shutdown 關機
wpeutil reboot 重啟
wpeutil CreatePageFile /path=C:\pagefile.sys.設置虛擬內存
wpeutil DisableFirewall 開關防火牆(Enablefirewall)
                                     

7.3 winpe的初始化設置—Wpeinit.exe
7.3.1 Wpeinit.exe的介紹
Wpeinit 是命令行工具,它在每次啟動Windows PE 時,對其進行初始化.當Windows PE 啟動時,Winpeshl.exe 執行啟動Wpeinit.exe 的Startnet.cmd.
具體地說,Wpeinit.exe 安裝PnP 設備,處理Unattend.xml 設置並加載網絡資源.
另外,Wpeinit 會將日誌消息輸出到c:\Windows\system32\wpeinit.log.

7.3.2 Wpeinit.exe的使用
首先你得建立一個應答文件,打開Windows系統映像管理器,想偷懶的可以直接以win7的安裝文件基礎,打開安裝盤source文件夾下install_windows 7 ultimate.clg.
再新建應答文件,傳送Components中的Microsoft-Windows-Setup到pe,在這裡可以設置屏幕分辨率,計算機名,頁面文件等等,刪掉不需要的部分,保存為init.xml

20130205_002872afbadd99f13e9aRNRb6C3lMa0l  

調用如下:
wpeinit.exe /unattend=X:\Users\Default\Documents\init.xml
                                     

7.4 explorer的自動載入—Winpeshl.exe
7.4.1 比如,我們可以讓winpe自動載入explorer並啟用主題,新建ISO\Windows\System32\winpeshl.ini 中內容為:
[LaunchApps]
wpeinit.exe /unattend=X:\Users\Default\Documents\init.xml
ux.exe
X:\windows\explorer.exe
/* 沒有應答文件直接運行wpeinit.exe.當然,還可以加載更多的程序,一行一行的添加就行了. */
/************************************************* ***************************
背景知識:Windows PE 提供了三種方法啟動自定義腳本:Winpeshl.ini,Startnet.cmd 和Autounattend.xml.
Windows PE 默認界面是一個命令提示符窗口.但是,您可以創建自定義的Winpeshl.ini 文件,以運行自己的外殼應用程序(SHELL).也可以創建自己的Startnet.cmd 版本來運行特定的命令集,批處理文件或腳本.
************************************************** **************************/

7.4.2 刪除startnet.cmd
當你加入上面的Winpeshl.ini文件時,Winpeshl.exe不再檢測startnet.cmd是否存在,startnet.cmd已經不起任何作用了,刪不刪掉都可以.

 


 

8 使用windows的其他功能和設置
                                     
8.1 windows程序的添加
由於我們直接使用了修改的win7的software註冊單元,其他功能的添加就很簡單了.基本不用改註冊表,直接複製文件就是了.
8.1.1 比如要加入ie8,就複製Program Files\Internet Explorer下所有文件(以及system32文件夾下相關文件)到ISO\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配置單元(:ISO\Windows\System32\config下system文件)到註冊表並命名為pe-sys,導入剛才導出的msiserver即可.
                                     
8.3 windows的一些設置
你要設置計算機名,桌面圖片,oem信息和圖片,隱藏夾顯示與否,開始菜單,任務欄,桌面什麼的,網上很多了,這裡列舉幾個:

8.3.1 壁紙與用戶頭像
壁紙文件:ISO\Windows\system32\winpe.bmp
//修改路徑在這裡:HKEY_LOCAL_MACHINE\DEFAULT\Control Panel\Desktop\WallPaper
用戶頭像文件:ISO\ProgramData\Microsoft\User Account Pictures\user.bmp

8.3.2 修改計算機右鍵屬性內容
用ResHacker.exe工具修改Windows\System32\zh-CN下systemcpl.dll.mui文件即可.

8.3.3 開始菜單和桌面
控制開始菜單的顯示項目:
\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced
桌面圖標的顯示和隱藏:
\Software\Microsoft\Windows\CurrentVersion\Explorer\HideDesktopIcons

8.3.4 計算機名稱的修改
加載PE的system文件,修改如下鍵值:
Controlset001\Control\ComputerName\ActiveComputerName\ComputerName
Controlset001\Control\ComputerName\ComputerName\ComputerName
Controlset001\Control\Session Manager\Environment\COMPUTERNAME
Controlset001\Services\Tcpip\Parameters\Hostname
Controlset001\Services\Tcpip\Parameters \NV Hostname
                                     
8.4 微軟拼音的添加: 文件很大,不推薦,我就不寫了,真的想要可以看waik的幫助文件,很簡單,批處理都給你寫好了.


                                    
                                     
9 一些需要注意的一些地方和其他程序的加入
                                     
9.1 用戶文件夾的更改,默認在config文件夾下,建議改到X:\Users\Default下,在Microsoft\Windows NT\CurrentVersion\ProfileList\S-1-5-18 下修改.
                                     
9.2 計算機管理管理不能在"我的電腦"上用右鍵打開,加載pe註冊表software單元,修改Classes\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\Manage\command,
為 %SystemRoot%\system32\mmc.exe compmgmt.msc
                                     
9.3 "關機"按鈕無效,可以改software單元的Microsoft\Windows\CurrentVersion\Policies\Explorer 添加"NoClose"=dword:00000001 或0 移出或顯示"關機"按鈕
                                     
9.4 如果你不添加,桌面右鍵菜單"小工具"很難看,可以去掉,同樣,刪除\Classes\Directory\Background\shellex\ContextMenuHandlers\Gadgets 和Classes\DesktopBackground\Shell\Gadgets 即可
                                     
9.5 MSDaRT工具的加入,可以用7zip打開MSDaRT65_x64.msi文件,提取其中的tools.cab和Sweeper.cab中mount文件夾合併到pe即可(32位類似).
                                     
9.6 綠色程序的加入與快捷方式等
如果文件不大,可以直接放到program files 目錄下並和boot.wim一起打包.你也可以單列出來放到光盤上,或是打包成新的wim文件,進入pe後再掛載.

9.6.1 "桌面"快捷方式在\Users\Default\Desktop .

9.6.2 "所有程序"快捷方式在
\Users\Default\AppData\Roaming\Microsoft\Windows\Start Menu\Programs
                            \ProgramData\Microsoft\Windows\Start Menu\Programs

9.6.3 鎖定到任務欄:
快捷方式在\Users\Default\AppData\Roaming\Microsoft\Internet Explorer\Quick Launch\User Pinned\TaskBar,
另外還需要導入default單元的\Software\Microsoft\Windows\CurrentVersion\Explorer\Taskband 項.

9.6.4 附到開始菜單欄:
快捷方式在\Users\Default\AppData\Roaming\Microsoft\Internet Explorer\Quick Launch\User Pinned\StartMenu\,
另外還需要導入default單元的\Software\Microsoft\Windows\CurrentVersion\Explorer\StartPage2 項.
                                     
9.7 綠化第三方程序到PE
可以用註冊表工具分別掃描安裝程序前後的註冊表,提取需要寫入的鍵值.將註冊表導入PE,並複制安裝形成的文件

☞大家注意到,用微軟自帶的winpeshl.exe載入explorer關機按鈕無效.如果需要,可以使用pecmd, pecmd有自己的一套東西,操作起來會方便很多,大家可以根據需求與喜好用pecmd替換掉winpeshl,並寫入pe註冊表software單元中的CmdLine.

 

Win7PE_X64支持文件列表.zip

 

接步驟5給出走向實用化的進階教程
    基於Win7PE_X86(比較普遍的WinPE版本,無憂資料豐富,便於學習研究)


 

 

10 用PECMD取代winpeshl
在步驟5 中,我們得到了能進入"資源管理器"(也即explorer,也即MS SHELL)的WinPE,是微軟系統ISO修改而來的.
體積很大,但我們要的是WinPE的核心——註冊表.
為了方便大家學習,長經驗,我做了以下操作:
                                     
10.1 用PECMD代替winpeshl.exe,跳過CMD界面直接進入桌面:
定位到WinPE註冊表SYSTEM的SETUP項,在CMDLINE中用"PECMD MAIN %Systemroot%\PECMD.INI"代替"winpeshl.exe"
PECMD.INI的代碼:
==============================
INIT
EXEC !=%SystemRoot%\system32\winpeshl.exe
SHEL %SystemRoot%\explorer.exe
==============================
winpeshl.ini的代碼:
==============================
[LaunchApps]
wpeinit.exe
==============================
                                     
10.2 現在已經得到可以進入桌面的WINPE註冊表,有了這個核心,其他什麼文件和優化都不是難點.
我把修改的註冊表和Windows\winsxs複製移植到絕對PE_V1.6,正常進入桌面.
[添加了部分Windows\winsxs是因為直接替換註冊表會藍屏,根據我的經驗需要補充Windows\winsxs.還有可能是驅動問題]

20130130_2e1c38662a124b4957d0MwnkGWMWAoVk  

 

10.3 稍微精簡了一下,然後發個可啟動的"演示用WIN7PE.ISO"給大家看看效果.
http://pan.baidu.com/share/link?shareid=166615&uk=3358530891&third=0

20130130_9d54a76b80a50e668c9dYEAUcGbnEvGs  

 


 

 

11 PECMD.INI中的常用命令解釋
PECMD接管winpeshl後,所有的配置可直接通過PECMD.INI中的命令來實現.下面給出一些最基本的命令,便於入門,更詳細的命令解釋在PECMD幫助文檔中可以看到.學習時最好參考一些文件結構簡單的WinPE,用記事本查看裡面的PECMD.INI,一般在System32目錄或者Windows目錄下,有的PECMD.INI還加載了外置配置文件,也是.INI文件,可以合併的.
                                     
11.1 一些基礎的環境變量:
%CurDir% 表示本配置文件所在目錄
%SystemRoot% 和 %WinDir% 均表示Windows目錄
%ProgramFiles% 表示Program Files 目錄
%Desktop% 表示桌面
%StartMenu% 表示開始菜單目錄
%Startup% 表示啟動菜單目錄
%Programs% 表示程序菜單目錄
                                     
11.2 基礎 EXEC,LOAD,LINK 命令寫法
EXEC %ProgramFiles%\Internet Explorer\iexplore.exe 表示運行在Program Files 目錄下\Internet Explorer\iexplore.exe 程序
LOAD %ProgramFiles%\Tools.ini" 表示加載在Program Files 目錄下的Tools.ini 外置配置文件
LINK %Desktop%\騰訊QQ,%ProgramFiles%\QQ.exe 表示在桌面創建一個名為"騰訊QQ "的快捷方式,並且鏈接指向Program Files 目錄下\QQ.exe
☞EXEC 負責運行後綴名為exe,bat,cmd等可執行文件
☞LOAD 負責加載後綴名為ini 的配置文件
☞LINK 負責創建快捷方式,它負責的文件類型很多
                                     
11.3 常見符號 ! @ _ & =意義
11.3.1這裡這些符號" ! @ _ & ="都是指搭配EXEC時的,因為比較常用.常見的有:EXEC _ EXEC & EXEC ! EXEC @
例如:
EXEC _%SystemRoot%\123.exe ------表示最小化運行Windows 目錄下的123.exe
EXEC &%SystemRoot%\123.exe ------表示最大化運行Windows 目錄下的123.exe
EXEC !%SystemRoot%\123.exe ------表示隱藏運行Windows 目錄下的123.exe (常用)
EXEC @%SystemRoot%\123.exe ------表示徹底隱藏運行Windows 目錄下的123.exe
11.3.2另外一種寫法:
EXEC =!%SystemRoot%\123.exe ------表示隱藏運行Windows 目錄下的123.exe
[它多了一個"="號,表示等待這個命令執行結束,可以根據自己的情況加或不加]


                                     
                                     
12 實戰經驗
下面的帖子是本人製作的PE發布地址,留下了許多經驗性資料或教程,僅供大家參考
①【ACOS啟動盤】【自製【Win7PE】日誌】
http://bbs.wuyou.com/viewthread.php?tid=209434&highlight

②【ACOS啟動盤】【Win8PE,這個不錯喔】
http://bbs.wuyou.com/viewthread.php?tid=270120&extra=page%3D2


 


13 大總結

13.1 常見的 WinPE 製作途徑:

①ADK/AIK ——修改WinPE.WIM
                                                           
②Winbuilder ——修改BOOT.WIM 的分卷2 或者WinRE.WIM
                  
③全手工式——修改BOOT.WIM 的分卷1
重點:
無論是BOOT.WIM 卷#1 , BOOT.WIM 卷#2 ,WinRE.WIM , WinPE.WIM 中哪一種,都可以採取全手工式途徑製作PE(基於它們本質都是Windows PE 的原理)
難度係數如下: BOOT.WIM 卷#1 > BOOT.WIM 卷#2 = WinRE.WIM > W​​inPE.WIM (本文方法因而通用)
                                                                                
13.2 窺探本質,脫離局限
http://bbs.wuyou.com/viewthread.php?tid=275347&highlight

 

 

擴展閱讀:
①ADK/AIK 版塊
Windows ADK(Windows Assessment and Deployment Kit ):
http://www.microsoft.com/zh-cn/download/details.aspx?id=30652

Windows AIK(Windows Automated Installation Kit):
http://www.microsoft.com/zh-cn/download/details.aspx?id=5753

②Winbuilder 版塊
用WinBuilder製作一個Win8PE (X86,X64):
http://bbs.wuyou.com/viewthread.php?tid=256062&extra=page%3D3

Win8PE SE Release:
http://theoven.org/index.php?topic=438.0

Win7PE SE & Release:
http://theoven.org/index.php?topic=131.msg2068#msg2068

 

注册表参考教程.zip 


WinPE_DIY资料.zip

 

文章標籤
創作者介紹
創作者 m1016c 的頭像
m1016c

Martin Chang的部落格

m1016c 發表在 痞客邦 留言(1) 人氣()


留言列表 (1)

發表留言
  • 訪客
  • 感謝,確實是長知識的地方。