寫這個的目的是希望對大家OEM多合一制作有進一步的理解,摒棄偏見,享受DIY的樂趣。
OEM激活要具備三個要素:證書、OEM SLP KEY和主板BIOS具備SLIC,WINDOWS VISTA要求為SLIC2.0,WINDOWS 7要求為SLIC2.1,SLIC2.1一般情況兼容2.0,SLIC是有區分品牌的。第三個要素在硬件上,即你的主板要符合激活要求。舉例:你的主板 BIOS有聯想的SLIC2.1,你現在想安裝WINDOWS 7 專業版,如果光盤中有整合聯想的證書,同時整合專業版的SLP KEY(不限品牌),安裝后將自動激活。OEMLOGO、壁紙、幫助、服務網址等屬OEM體驗與廠商服務范疇,不是構成激活的必要條件。
下面的講解主要就OEM激活的前兩個要素展開,因為第三個要素是硬件上而不是光盤上。
一、$OEM$文件夾的優勢與不足
優勢:操作簡便快捷,不需要復雜的IMAGEX命令或DISM命令,只需要UltraISO這樣光盤處理小軟件就可以了,制作好的$OEM$文件夾只需加入到ISO文件的sources目錄下就可以了。應該說人人皆宜。(忘記說了,ISO的sources目錄下的ei.cfg要刪除掉或替換掉)
替換成這樣的ei.cfg:
[EditionID]
Ultimate
Professional
HomePremium
HomeBasic
Starter
[Channel]
OEM
[VL]
3
不足:主要體現在多品牌的制作上,一般來說制作OEM版是需要一些LOGO,那怕是簡單點,這時候$OEM$文件夾就會體現出它的不足來了。在制作33in1這樣的大合集,如果不去動到install.wim這個文件,恐怕難以做到,更主要的是人們習慣在開始安裝時有個選擇菜單然后選擇一個品牌來安裝,這是$OEM$文件夾無法做到。
二、$OEM$文件夾發布的基本原理
利用$OEM$文件夾來發布共享,不是WINDOWS 7的專利,XP時期就有了。
1、$OEM$文件夾的調用
安裝復制文件時,光盤中SOURCES中的$OEM$文件夾里面的文件或文件夾會被復制到C盤下的指定目錄內。(安裝分區以C盤為例)
2、$OEM$文件夾的基本結構
里面的文件(夾)按什么規則進行復制呢?路徑怎么確定?先看一下$OEM$文件夾一個例子(聯想恢復盤風格為例),文件目錄結構和文件如下:
H:\$OEM$
+---$$ ---------此目錄內的文件復制到C盤WINDOWS目錄內
| +---Panther ---------此目錄及目錄內文件夾、文件復制到C盤WINDOWS目錄內,下同。
| | unattend.xml
| |
| +---Resources
| | \---Themes
| | Lenovo_1.theme
| | Lenovo_2.theme
| | Lenovo_3.theme
| | Lenovo_4.theme
| |
| +---Setup
| | \---Scripts ---------此目錄內的文件是用來導入OEM SLP KEY(必須的)
| | HbSlp.cmd ---------CMD文件(可并入OOBE.CMD)
| | HpSlp.cmd --------- CMD文件(可并入OOBE.CMD)
| | oobe.cmd ---------CMD 主文件(必須的)
| | ProSlp.cmd --------- CMD文件(可并入OOBE.CMD)
| | StaSlp.cmd --------- CMD文件(可并入OOBE.CMD)
| | UltSlp.cmd --------- CMD文件(可并入OOBE.CMD)
| |
| +---System32
| | +---OEM ---------此目錄是用來放置OEM證書,以便激活程序查找(必須的)
| | | lenovo.oemcert.100036.xrm-ms ------證書(必須的)
| | | Lenovo.reg
| | |
| | \---OOBE
| | \---info
| | | Lenovo.bmp
| | | Lenovo.png
| | | logo.bmp
| | | mcelogo.png
| | | oobe.xml
| | | PLA.rtf
| | | userlenovo.png
| | |
| | +---Backgrounds
| | | BackgroundDefault.jpg
| | |
| | \---default
| | \---2052
| | oobe.xml
| | PLA.rtf
| |
| \---Web
| \---Wallpaper
| +---Lenovo_1
| | Lenovo_11.jpg
| | Lenovo_12.jpg
| | Lenovo_13.jpg
| | Lenovo_14.jpg
| | Lenovo_15.jpg
| | Lenovo_16.jpg
| |
| +---Lenovo_2
| | Lenovo_21.jpg
| | Lenovo_22.jpg
| | Lenovo_23.jpg
| | Lenovo_24.jpg
| |
| +---Lenovo_3
| | Lenovo_31.jpg
| | Lenovo_32.jpg
| | Lenovo_33.jpg
| | Lenovo_34.jpg
| |
| \---Lenovo_4
| Lenovo_41.jpg
| Lenovo_42.jpg
| Lenovo_43.jpg
| Lenovo_44.jpg
|
\---$1 ---------此目錄內的文件復制到C盤根目錄下
\---Users
\---Default
\---Favorites
\---Lenovo
聯想.url
聯想支持.url
重點看一下$$、$1以及幾個標有“必須的”文件夾和文件。這些文件安裝開始時被復制到指定的位置,安裝程序將在OOBE階段開始之后調用它們,安裝KEY和證書。
$$、$1內的文件夾、文件復制到對應目錄,比如$$內有一個Panther文件夾復制到C盤WINDOWS目錄內,如果C盤WINDOWS里面已有一個Panther文件夾,那么將是合并這兩個文件夾,如果沒有,那么就是復制添加Panther文件夾(包括$$\Panther里面子文件夾和文件)到安裝分區的Windows目錄下。
如: 以安裝分區為C盤為例:
$$\System32\oem對應的是C:\windows\system32\oem
$1\Users\Default\Favorites\Lenovo對應的是C:\Users\Default\Favorites\Lenovo
如果是D盤:
$$\System32\oem對應的是D:\windows\system32\oem
$1\Users\Default\Favorites\Lenovo對應的是D:\Users\Default\Favorites\Lenovo
3、安裝程序是什么時候安裝KEY和證書呢?
安裝程序是OOBE階段安裝KEY和證書。OOBE 階段包含以下 Windows 任務:
- Unattend (oobeSystem)
- WinSAT
- OOBE.cmd
- OOBE 向導(歡迎使用 Windows)
- OOBE 任務
- 重新啟動(可能)
- Setupcomplete.cmd
- 登錄
- 首次登錄命令
- 桌面
證書的安裝是在導入KEY之后,證書的安裝是不需要我們手工加入CMD命令的,當然你要添加也可以。CMD命令導入KEY之后,安裝程序會自動搜索 windows\system32\oem目錄,如果里面有適合于BIOS SLIC的證書,將自動安裝此證書。這就是制作通用版本的原理,因為KEY是不同版本通用的,安裝時導入KEY之后,將自動搜索oem目錄,如果我們把所有品牌的證書都放在這里,不管你安裝什么品牌,安裝程序都可以找到證書,并自動幫你安裝適合你的BIOS SLIC的證書,從而實現自動激活。
總結一下,利用$OEM$文件夾發布共享,我們不需要用復雜的IMAGEX或 DISM命令去解開install.wim文件。目的很簡單,就是安裝開始時,預先把導入KEY的CMD文件和證書復制到安裝分區的WINDOWS中的指定目錄內,讓安裝程序幫你導入KEY和證書,而不是安裝結束后你自己手工去做這件事。
既然安裝程序能幫你事先KEY和證書,這種事何樂而不為!
特別是證書的安裝,這種方法比系統安裝后手工導入要方便許多,WINDOWS安裝程序的證書安裝是智能安裝,安裝程序會搜索WINDOWS\SYSTEM32\OEM目錄內的最合適的證書,如果是你自己導入證書,有時還搞不清楚是哪個證書是合適的,因為有的品牌有好幾個證書。
三、OOBE.CMD中多版本導入KEY的命令有時候我是用多個CMD文件來安裝不同版本的KEY,當然也可以將這幾個CMD合并到OOBE.CMD文件之中。
1、多個CMD文件的OOBE.CMD文件命令示例:
@echo off
start /w regedit /s %systemroot%\System32\oem\Lenovo.reg
reg QUERY "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v "EditionID" > %TEMP%\Edition.txt
findstr /i "homeBasic" "%TEMP%\Edition.txt" && call %systemroot%\setup\scripts\HbSlp.cmd
findstr /i "Starter" "%TEMP%\Edition.txt" && call %systemroot%\setup\scripts\StaSlp.cmd
findstr /i "HomePremium" "%TEMP%\Edition.txt" && call %systemroot%\setup\scripts\HpSlp.cmd
findstr /i "Professional" "%TEMP%\Edition.txt" && call %systemroot%\setup\scripts\ProSlp.cmd
findstr /i "Ultimate" "%TEMP%\Edition.txt" && call %systemroot%\setup\scripts\UltSlp.cmd
del /F /Q %systemroot%\setup\scripts\HpSlp.cmd
del /F /Q %systemroot%\setup\scripts\ProSlp.cmd
del /F /Q %systemroot%\setup\scripts\UltSlp.cmd
del /F /Q %systemroot%\setup\scripts\StaSlp.cmd
del /F /Q %systemroot%\setup\scripts\HbSlp.cmd
del /F /Q %systemroot%\system32\oem\Lenovo.reg
:Cleanup
del /F /Q %systemroot%\setup\scripts\oobe.cmd
分析:
start /w regedit /s %systemroot%\System32\oem\Lenovo.reg ,注冊表寫入OEM信息(非必要)
reg QUERY "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v "EditionID" > %TEMP%\Edition.txt ,此時將安裝版本信息EditionID導出,轉變為Edition.txt 文件。
findstr /i "homeBasic" "%TEMP%\Edition.txt" && call %systemroot%\setup\scripts\HbSlp.cmd,如果在Edition.txt 找到“homeBasic”字樣,將調用HbSlp.cmd文件導入homeBasic的OEM SLP KEY;如果在Edition.txt 中找到“Ultimate”字樣,將調用UltSlp.cmd文件導入Ultimate版本的OEM SLP KEY;其他幾個不一細述。再下幾行是刪除CMD文件的命令,因為后面我們不再需要這些CMD文件。
2、單個CMD文件的OOBE.CMD文件命令示例:
(意思是只用一個OOBE.CMD就可以了)
@echo off
reg QUERY "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v "EditionID" > %TEMP%\Edition.txt
findstr /i "Ultimate" "%TEMP%\Edition.txt" && cscript %windir%\system32\slmgr.vbs -ipk 6K2KY-BFH24-PJW6W-9GK29-TMPWP
findstr /i "Professional" "%TEMP%\Edition.txt" && cscript %windir%\system32\slmgr.vbs -ipk 32KD2-K9CTF-M3DJT-4J3WC-733WD
findstr /i "HomePremium" "%TEMP%\Edition.txt" && cscript %windir%\system32\slmgr.vbs -ipk 27GBM-Y4QQC-JKHXW-D9W83-FJQKD
findstr /i "homeBasic" "%TEMP%\Edition.txt" && cscript %windir%\system32\slmgr.vbs -ipk 22MFQ-HDH7V-RBV79-QMVK9-PTMXQ
findstr /i "Starter" "%TEMP%\Edition.txt" && cscript %windir%\system32\slmgr.vbs -ipk TGBKB-9KBGJ-3Y3J6-K8M2F-J2HJQ
:Cleanup
del /F /Q %systemroot%\setup\scripts\oobe.cmd
分析:findstr /i "Ultimate" "%TEMP%\Edition.txt" && cscript %windir%\system32\slmgr.vbs -ipk 6K2KY-BFH24-PJW6W-9GK29-TMPWP,這里只不過把原來調用的UltSlp.cmd文件里面的內容搬進OOBE.CMD文件而已。不細述了。