教你如何制作原生態(tài)PE(微軟官方boot.wim開Explorer教程)
?來源:系統(tǒng)總裁
原文鏈接
1:https://www.sysceo.com/Article-article_info-id-961.html
2:https://www.sysceo.com/Article-article_info-id-1144.html
話不多說 正文開始!
首先準(zhǔn)備工作,微軟原版的win7x86的安裝鏡像ISO文件,不要打過補丁的,
用VMware虛擬機安裝一個干凈的win7x86。
為了圖后面操作省事,開啟administrator用戶,并關(guān)閉UAC。
以上過程都略過,下面來實際操作。

這是一臺安裝好win7x86的VMware虛擬機。
?
另外我們還需要用到以下幾個軟件:
7-zipx86(我這里用的是16.04)
wimtool(我這里用的是1.30.2011.0501x86)
Registry Workshop(我這里用的是4.6.2)
這三個軟件我會打包提供下載地址。
?
下面來做一些簡單的準(zhǔn)備工作,打開“計算機”

依次點擊工具-文件夾選項


從上到下一次點擊,此操作目的是顯示系統(tǒng)隱藏文件
?
打開C:\Recovery目錄,看到如下文件夾
(系統(tǒng)一定要母盤或原版)

這個子文件夾可能你的和我的名字不一樣,不用理會,打開就行。

這個winre.wim文件就是我們要下手的地方了。
(當(dāng)然有的人喜歡用原始鏡像中的BOOT.WIM也一樣,我這里是為了演示操作方便。)
首先我們把winre.wim復(fù)制黏貼備份一份。
用7-zip打開winre.wim,找到\windows\system32\winpeshl.ini文件,拖出來。
其原始內(nèi)容如下圖:

我們把它改成如下內(nèi)容(注意winpeshl.ini默認(rèn)是只讀屬性,要改成可寫):
[LaunchApps]
wpeinit.exe
cmd.exe
解釋一下這里代碼含義:
[LaunchApps]執(zhí)行多條命令的意思,一行一個。
wpeinit.exe是初始化PE的微軟內(nèi)部命令行工具,例如:初始化USB設(shè)備,初始化PNP設(shè)備,另外也可以初始化網(wǎng)絡(luò),開啟DHCP服務(wù)等等,詳細(xì)的請查看微軟官方文檔。
cmd.exe這里主要作為阻塞窗口。否則上面的命令執(zhí)行完后,就自動重啟了,這里也是為了方便調(diào)試使用。
?
修改好的winpeshl.ini再拖拽進去替換到WINRE.WIM里。
下面就來個簡單的測試。重啟虛擬機,狂按F8,

選擇第一項“修復(fù)計算機”,也就是啟動WINRE.WIM

我們看到了cmd窗口,可以嘗試調(diào)用任務(wù)管理器看看。WINRE環(huán)境默認(rèn)帶taskmgr.exe支持

有個恢復(fù)環(huán)境,我們也可以試試
X:\sources\recovery\recenv.exe



這里只是演示一些東西,沒有多大意思。
下面我們重啟,在進入系統(tǒng),想辦法添加explorer.exe。
然后提供一個簡單的比較成熟的方法。
按照我的步驟一步一步來,后面再總結(jié)。
?
從原版install.wim中提取SOFTWARE注冊表,用7-zip打開原版系統(tǒng)的INSTALL.WIM

依次為(因為卷5是旗艦版,所以就用這個了):
\5\Windows\System32\config\SOFTWARE
拖拽到D盤根目錄。
下面要修改一下SOFTWARE文件的所有權(quán),一次按下列截圖操作。
打開注冊表編輯器,選中HKEY_LOCAL_MACHINE





右鍵點擊SOF項














然后打開Registry Workshop

選中SOF,然后快捷鍵CTRL+F,
輸入C:\
我們需要把C:\替換為X:\
我們需要把D:\替換為X:\
我們需要把$windows.~bt\替換為空(若沒有則不用處理)
我們需要把Interactive User刪除

下面就是搜索到的結(jié)果 (這里注意,程序一次性最多只能搜索處理1000個)
如果一次性沒有處理完,就重復(fù)幾次,直到?jīng)]有結(jié)果為止)

上面搜索到的C:\只有一個項目,我們直接選中下面的結(jié)果項,右鍵選擇替換


輸入X:\并點擊替換
下面搜索D:\

選中其中一條,然后快捷鍵CTRL+A,就全選了
然后點擊右鍵選擇替換,輸入X:\

這里就是上面說的一次只能處理1000條信息了,需要重復(fù)操作幾次。我總共處理了3次D:\才完成。
在這里我們搜索$windows.~bt\無結(jié)果,就不用處理
繼續(xù)搜索Interactive User
如下圖操作即可

處理完INSTALL.WIM中的SOFTWARE文件,我們關(guān)閉Registry Workshop軟件
然后選中SOF,再一次點擊 ? 文件---卸載配置單元

下面我們來修改WINRE.WIM中的SOFTWARE文件
用7-zip打開WINRE.WIM,拖拽出\WINDOWS\SYSTEM32\CONFIG\SOFTWARE文件到C:\SOFTRWARE
用系統(tǒng)自帶注冊表程序掛載之,然后像修改INSTALL.WIM中的SOFTWARE文件一樣修改一下所有權(quán)。并用Registry Workshop處理下,和前面一樣
我們需要把C:\替換為X:\
我們需要把D:\替換為X:\
我們需要把$windows.~bt\替換為空(若沒有則不用處理)
我們需要把Interactive User刪除
如果沒有的就不用處理
??
繼續(xù)操作系統(tǒng)自帶的注冊表軟件
選中SOF,點擊導(dǎo)出

保存為D:\SOF.REG文件,后面要用到。
?
卸載WINRE.WIM的SOFTWARE文件
然后我們掛載處理過的INSTALL.WIM中的SOFTWARE文件,也就是前面的D:\SOFTWARE為SOF
?
然后我們找到D:\SOF.REG文件,雙擊選擇是


最后我們要修改一個地方,恢復(fù)一下SHEL的鍵值
定位到HKEY_LOCAL_MACHINE\SOF\Microsoft\Windows NT\CurrentVersion\Winlogon
然后修改Shell的鍵值為explorer.exe


修改完之后就可以卸載SOF了
最終這個INSTALL.WIM中處理過的SOTWARE文件就是我們最終需要的SOFTWARE文件,也就是D:\SOFTWARE文件
我們把D:\SOFTWARE拖拽到WINRE.WIM中替換,重啟測試一下。

還是比較順利的。
下面就來添加explore.exe資源管理器
Windows\explorer.exe
Windows\zh-CN\explorer.exe.mui
把C:盤系統(tǒng)里的上面對應(yīng)的文件拖入winre.wim對應(yīng)目錄,然后再重啟測試
輸入explorer.exe,提示缺少ExplorerFrame.dll
然后我們再補充如下文件
Windows\System32\ExplorerFrame.dll
Windows\System32\zh-CN\explorerframe.dll.mui
再重啟測試


這次提示缺少mscories.dll、iedkcs32.dll

不過點擊確認(rèn)之后已經(jīng)可以進入桌面了。


不過資源管理器是打不開的狀態(tài),提示“不支持此接口”。
?
這些后續(xù)處理工作,后面的教程中在慢慢講解。
?
附錄:
Win8在WINRE的基礎(chǔ)上添加explorer.exe支持
Win8的處理上比win7還簡單一些,不需要導(dǎo)出WINRE.WIM中的SOFTWARE為SOF.REG再導(dǎo)入INSTALL.WIM中的SOFTWARE。這一步是可以跳過的,直接使用INSTALL.WIM中的SOFTWARE處理之后即可使用。
這里需要注意的是,win8原生的explore.exe在PE下任務(wù)欄是不能使用的,而且桌面需要右鍵刷新一次才可以顯示圖標(biāo),這是Win8自身的問題,不用理會。老外寫了一個DLL,可以讓win8直接使用win7的explorer.exe,這樣問題就解決了。需要的文件已經(jīng)打包在下載地址里。
Windows\explorer.exe
Windows\zh-CN\explorer.exe.mui
Windows\System32\ExplorerFrame.dll
Windows\System32\zh-CN\explorerframe.dll.mui
使用默認(rèn)的Win8 explorer截圖

啥也沒有。任務(wù)欄空白
?
換win7的explorer.exe之后

成功加載桌面。后續(xù)的處理工作以后慢慢再講。
Win10在WINRE的基礎(chǔ)上添加explorer.exe支持(這里以10240專業(yè)版為例,后面微軟的Win10版本依賴文件列表不同,暫不做說明)
和win8出來起來基本一致,之后explore.exe支持文件列表稍有不同
Windows\explorer.exe
Windows\zh-CN\explorer.exe.mui
Windows\System32\ExplorerFrame.dll
Windows\System32\zh-CN\explorerframe.dll.mui
Windows\System32\dcomp.dll
Windows\System32\twinapi.dll
Windows\System32\zh-CN\ twinapi.dll.mui
最終效果在這里

接著教程1繼續(xù)完善explorer.exe的支持。
? ? 還是先從Win7入手
? ? 加載explorer.exe提示缺少mscories.dll、iedkcs32.dll(iedkcs32.dll.mui)


? ? 我們還需要添加一些文件完善:
? ? Windows\System32\actxprxy.dll(解決alt+e打開資源管理器提示“不支持此接口 ”)
? ? 為了解決打開資源管理器空白,還需要添加如下文件列表:
? ? Windows\System32\comctl32.dll
? ? Windows\System32\zh-CN\comctl32.dll.mui
? ? Windows\System32\mscories.dll
? ? Windows\System32\oledlg.dll
? ? Windows\System32\zh-CN\oledlg.dll.mui
? ? Windows\System32\shdocvw.dll
? ? Windows\System32\zh-CN\shdocvw.dll.mui?
? ? Windows\System32\shellstyle.dll
? ? Windows\System32\zh-CN\shellstyle.dll.mui

? 現(xiàn)在基本上explorer.exe的功能正常了。
? ??不過我們常用的PE,大部分都習(xí)慣用pecmd.exe來接管系統(tǒng),這樣自定義或者維護起來接口也比較方便,也可以解決開始菜單關(guān)機重啟無效的問題。
? ? 下面我們使用PECMD.EXE和PECMD.INI來接管PE,請注意下面幾個步驟。
? ??在正常系統(tǒng)中,我們編寫好一個PECMD.INI配置文件和一個WINPESHL.INI的配置文件。
? ??PECMD.INI最簡單的寫法如下:
? ??DISP W1024 H768 B32
? ??EXEC =!% SystemRoot %\System32\Winpeshl.exe
? ??SHEL %SystemRoot%\EXPLORER.EXE
? ??WINPESHL.INI最簡單寫法如下:
? ??[LaunchApps]
? ??wpeinit.exe
? ??修改winre.wim中的SYSTEM注冊表

修改\Setup\CmdLine注冊表值為:
? ??PECMD.EXE MAIN %SystemRoot%\System32\PECMD.INI
? ??修改完注冊表替換回去,再把PECMD.EXE、PECMD.INI、WINPESHL.INI替換進WINRE.WIM的SYSTEM32目錄即可。試試啟動效果。
? ??下面這個彈錯,就由大家自己研究解決了。


到此 你的pe做好了
? ? 附錄:Win8pe的explorer完善
? ??win8pe和win7pe基本差不多,只是win8pe后臺多一個wallpaperhost.exe的進程。需要殺掉它。
? ??在PECMD.INI中加上一行即可,修改后的pecmd.ini代碼如下:
? ??DISP W1024 H768 B32
? ??EXEC =!% SystemRoot %\System32\Winpeshl.exe
? ??KILL WallpaperHost.exe
? ??SHEL %SystemRoot%\EXPLORER.EXE


Win10pe與Win8pe類似。
? ??以后需要做一些特殊處理,或者程序添加修改等,可以簡單的利用PECMD.INI接口來完善這些信息,不過需要自學(xué)PECMD的一些相關(guān)命令。
需要的朋友們自己增加補丁和運行庫!