天天看點

Nlite後期處理技術小結

本帖被 deepin 從 『系統精簡與萬能克隆技術』 移動到本區(2007-06-17)

用了一段時間的Nlite,同時也在網上收集了不少的經驗,在自己做出最适合自己或幫人裝機的XP後,也不想保留後期處理技術了,留給後來的Nlite使用者,免得走彎路,研究後期的大多都保留自己的技術吧,偶覺得沒有意思,想想吧,如果以前雨浪不公布他的經典方法,現在不知道多少人還在走彎路。以後沒有必要再研究這個東西了,偶還要集中精力研究平面三維和程式。

下面的文章部分引自雨浪,Tingpu,lyz0508等一些網友的發表的技術,特此感謝。如有技術上的錯誤,也許偶也沒有研究到,請跟帖斧正。

Nlite精簡後期處理總結:

Nlite使用當然不想多說了,網上教程很多,自己挑自己需要的Windows元件吧。

唯一想說的是:在勾選去除元件時,多看看元件說明,如移除Outlook,将會失去什麼功能?

一、Nlite完成後,将I386檔案夾中Win9xmig、Win9xupg、Drw目錄删除掉,可以節約大量的空間。

二、實作Windows,Dos,CD光牒安裝三種安裝方式

要使你的XP能在Windows下安裝,也就是調用Winnt32.exe不出錯,需要保留Compdata目錄下的Drvmain.inf,和Ntcompat.inf兩個檔案,以及Winntupg目錄下的Netmap.inf和Netupgrd.dll兩個檔案即可,這個方法大概是Deepin找到的,或許是某個老外的方法也不一定。當然前題是精簡時不能移除DOS安裝。這樣你的Windows XP也可以實作Windows,Dos,CD光牒安裝三種安裝方式。另外更激進點的作法是把這三個INF裡除了小節名,鍵值全删光的作法,又節省了一點空間。

三、進一步壓縮i386目錄下的部分檔案,如下表:

ntprint.cat

ntprint.inf

regedit.exe

dbghelp.dll

exts.dll

p_w_picpathhlp.dll

dbgeng.dll

intl.inf   (這個檔案居然也可以壓縮,而且都不用修改Txtsetup,真是太好了!)

提示:用Cabarc.exe(XPCD光牒support\tools目錄下的Support.cab中)以21最大壓縮可以得到最好的效果,偶認為可以內建進自己的XP中,因為一般大家精簡時都删除了Support目錄的,這個是MS的免費DD,怎能不要?有時間,偶會寫個它的外殼程式,友善大家調用。另題外話一下,一直沒有發現這個工具,以前一直以為是Winrar壓縮率最高,結果有時候發現CAB居然比Winrar還厲害,該不是MS的秘密超強壓縮算法吧?

給一個指令行格式吧:cabarc -m LZX:21 n %1 %2

存為cab.bat

調用示例:壓縮上面表中第一個檔案,當然,其它檔案也可以如此壓縮

cab ntprint.ca_ x:\winxp\i386\ntprint.cat     x:為你CD光牒的位置

下面兩個檔案用Upx進行壓縮

winnt32u.dll

winntbbu.dll

不要忘了把未壓縮的檔案删除掉,又節約了好多的空間呀!^_^

四、處理輸入法(以保留了全拼,智能ABC為例)前題是在Nlite移除框中删除了輸入法相關檔案。

打開Hivesys.inf,查找Addreg,直到定位到最後一個,用分号注釋掉或是删掉如下行:

;HKLM,"SYSTEM\CurrentControlSet\Control\Keyboard Layouts\E0020804","Layout File",0x00000000,"kbdus.dll"

;HKLM,"SYSTEM\CurrentControlSet\Control\Keyboard Layouts\E0020804","Layout Text",0x00000000,"%KLT_74%"

;HKLM,"SYSTEM\CurrentControlSet\Control\Keyboard Layouts\E0020804","IME File",0x00000000,"winsp.ime"

;HKLM,"SYSTEM\CurrentControlSet\Control\Keyboard Layouts\E0030804","Layout File",0x00000000,"kbdus.dll"

;HKLM,"SYSTEM\CurrentControlSet\Control\Keyboard Layouts\E0030804","Layout Text",0x00000000,"%KLT_75%"

;HKLM,"SYSTEM\CurrentControlSet\Control\Keyboard Layouts\E0030804","IME File",0x00000000,"winzm.ime"

;HKLM,"SYSTEM\CurrentControlSet\Control\Keyboard Layouts\E00E0804","Layout File",0x00000000,"kbdus.dll"

;HKLM,"SYSTEM\CurrentControlSet\Control\Keyboard Layouts\E00E0804","Layout Text",0x00000000,"%KLT_91%"

;HKLM,"SYSTEM\CurrentControlSet\Control\Keyboard Layouts\E00E0804","IME File",0x00000000,"pintlgnt.ime"

規律為每三行代表一個輸入法,第一個三行是雙拼,第二個三行是鄭碼,第三個三行是微軟拼音,也就是在原輸入法設定中點添加時看到的,注釋掉後這裡就不會出現了,現在隻剩下内碼和全拼

打開Hivedef.inf,查找Preload,這裡将會看到幾個,從字面上可以這麼了解,就是預加載相應的輸入法,也就是左點輸入法看到的可以切換的輸入法,這裡我們将全拼設為不加載,将其置入添加輸入法選項。用分号注釋除下面兩行外的Preload

HKCU,"Keyboard Layout\Preload","1",0x00000002,"00000804"(美國中文鍵盤)

HKCU,"Keyboard Layout\Preload","2",0x00000002,"E0040804"(智能ABC)

同時更改加載順序為上面所示,HKCU,"Keyboard Layout\Preload","1"《————這個就是加載順序

順便注釋掉Intl.inf裡的Simsun.ttc,,,,,65535這行,我發現不注釋這裡,在家裡安裝正常,在機關的機器裡會出現字型缺失現象。

五、處理聲音

前提是Nlite移除開機聲,但保留xperror.wav、xphdrem.wav、xphdinst.wav、xpstartu.wav、xpshutdn.wav五個常用聲音

打開Hivedef.inf,定位到檔案未尾,添加如下行:

WINDOWS_XP_STARTUP="Windows XP 啟動.wav"

WINDOWS_XP_SHUTDOWN="Windows XP 關機.wav"

WINDOWS_XP_HARDWARE_INSERT="Windows XP 硬體插入.wav"

WINDOWS_XP_HARDWARE_REMOVE="Windows XP 硬體删除.wav"

WINDOWS_XP_ERROR="Windows XP 錯誤.wav"

定位到檔案開頭有HKCU,"AppEvents\Schemes\Apps",,0x00000012這裡的,将下面的行覆寫到相對應的聲音預設項,因為Nlite過後後面的值全為空,是以進XP沒聲音了。

HKCU,"AppEvents\Schemes\Apps\.Default\DeviceConnect\.Current","",0x00020000,"%SystemRoot%\media\%WINDOWS_XP_HARDWARE_INSERT%"

HKCU,"AppEvents\Schemes\Apps\.Default\DeviceConnect\.Default","",0x00020000,"%SystemRoot%\media\%WINDOWS_XP_HARDWARE_INSERT%"

HKCU,"AppEvents\Schemes\Apps\.Default\DeviceDisconnect\.Current","",0x00020000,"%SystemRoot%\media\%WINDOWS_XP_HARDWARE_REMOVE%"

HKCU,"AppEvents\Schemes\Apps\.Default\DeviceDisconnect\.Default","",0x00020000,"%SystemRoot%\media\%WINDOWS_XP_HARDWARE_REMOVE%"

HKCU,"AppEvents\Schemes\Apps\.Default\SystemAsterisk\.Current","",0x00020000,"%SystemRoot%\media\%WINDOWS_XP_ERROR%"

HKCU,"AppEvents\Schemes\Apps\.Default\SystemAsterisk\.Default","",0x00020000,"%SystemRoot%\media\%WINDOWS_XP_ERROR%"

HKCU,"AppEvents\Schemes\Apps\.Default\SystemExit\.Current","",0x00020000,"%SystemRoot%\media\%WINDOWS_XP_SHUTDOWN%"

HKCU,"AppEvents\Schemes\Apps\.Default\SystemExit\.Default","",0x00020000,"%SystemRoot%\media\%WINDOWS_XP_SHUTDOWN%"

HKCU,"AppEvents\Schemes\Apps\.Default\SystemStart\.Current","",0x00020000,"%SystemRoot%\media\%WINDOWS_XP_STARTUP%"

HKCU,"AppEvents\Schemes\Apps\.Default\SystemStart\.Default","",0x00020000,"%SystemRoot%\media\%WINDOWS_XP_STARTUP%"

聰明的你一定會留意到上面的DeviceConnect,DeviceDisconnect,SystemExit等關鍵字樣,沒錯,中文意思就是硬體連接配接,斷開,系統退出,系統啟動等意思。

六、處理搜尋助手(引用雨浪的)

一般人是直接在Nlite中移除搜尋助手這個元件,但是我不推薦這樣做,因為移除掉搜尋助手後,在安裝完成的系統中搜尋的進階選項是不能儲存的,需要你每次手動打開進階選項,否則搜尋不到你要找的檔案。這個問題以前很多朋友給我提過,經過多次測試之後,總 算找到一個算是完美的解決方法。保留搜尋助手,隻要删msgr3en.dll、nls302en.lex、courtney.acs、earl.acs、rover.acs這五個檔案即可。這五個檔案占用近5M空間,而整個搜尋助手不過占用近6M空間而已 。 這個工作可以交給Nlite來做,也可以後期手動來删除,并修改DOSNET.INF和TXTSETUP.SIF。這裡推薦由Nlite來做,因為可以減少手工修改DOSNET.INF和TXTSETUP.SIF的工作。隻需要在Nlite的删除額外檔案 框中分行輸入這幾個檔案名。

删除這五個檔案後,在安裝過程中(安裝元件時)會提示缺少檔案,我們還需要修"srchasst.in_"檔案來避免這個問題。解壓srchasst.in_,得到srchasst.inf,分别删"msgr3en.dll,,,32"、"nls30 2en.lex,,,32"、"courtney.acs,,,32"、"earl.acs,,,32"、"rover.acs,,,32"這幾行,或者用封号屏蔽它們。儲存後再壓縮回去,替換原檔案即可。

偶再加兩句吧,一般我是不會移去代理助手這個的,也就是那個叫Meilin.acs的檔案,因為在進行Agent程式設計練習時要用到這個檔案。上面所說的三個Acs檔案去掉後,梅林先生會出現在你的搜尋中,如果你去了它後,系統裡點啟動動畫助手後,就回不到上個菜單了。可以保留這個檔案,再用Office XP中有個很小的Acs檔案對它進行替換,隻有900多KB的,高興了你還可以用瑞星的,金山的助手來替換。

七、處理桌面Luna主題,更改Administartor使用者名,加強安全(引用Tingpu的)

早在二月時,研究內建Rolaye主題時發現的,也就是這裡Bida後來發的一篇關于Luna主題修改的文章的方法。雨浪在說明這個問題時好象是寫漏了一點,在下面第八點所說的小節中,有[email protected],-2036這麼一行字得注釋掉,你才看得到蘭天白雲。當時我內建Rolaye主題是可以正确顯示,Luna主題卻不能,于是對比了一下兩個主題的檔案,發現Rolaye沒有這行,于是注釋掉Luna裡的後,實驗正常顯示。

為了不讓别人找到我們系統裡的Administartor賬号,進行Hacker行為,有必要修改這個系統預設賬号,同理,Guest也可以改名的,參見Tingpu的原文,解壓Defltwk.in_,打開Defltwk.inf

找到[System Access]小節,添加

NewAdministratorName = "Jasmine",這裡Jamsine就是你第一次登入XP的管理者賬号。

NewGuestName = "XXXX" 添加後可以更改Guest賬号

改完後壓縮,替換原檔案。

八、手動添加Rolay主題并指定加載Rolay主題

偶下載下傳得到的Rolay檔案也許不全吧,有四個檔案,這裡當個示例。

首先将四個檔案中帶長檔案名的改成8.3Dos标準的檔案并壓縮了放I386目錄裡,否則Dos安裝時會不認的。

Royale.msstyles改成royale.mst

shellstyle.dll改成royaless.dll

Royale.theme改成Royale.the

再将Royale.bmp用Acdsee改成JPG格式的Royale.jpg,誰叫Jpg的省空間呢?嘿嘿

打開Royale.the,定位到[Control Panel\Desktop]小節,把Wallpaper=%WinDir%Resources\Themes\Royale\royale.bmp改成對應的JPG

當然,這裡你還可以改成自己喜愛的桌面。

打開TXTSETUP.sif,用十五的方法,跳到自己的标示後面,添加如下行

royale.jpg = 1,,,,,,,306,0,0

royale.mst = 1,,,,,,,306,0,0,Royale.msstyles

royaless.dll = 1,,,,,,,307,0,0,shellstyle.dll

royale.the = 1,,,,,,,129,0,0,Royale.theme

然後定位到開頭的[WinntDirectories]小節,在最後添加如下兩行

306 = Resources\Themes\Royale

307 = Resources\Themes\Royale\Shell\NormalColor

然後打開Winnt.sif添加如下小節和鍵值以加載Rolay主題,改成luna.theme想必你也知道什麼意思了吧?随意切換吧。

[Shell]

  CustomDefaultThemeFile = "%WinDir%\Resources\Themes\Royale.theme"

哪天你不想內建這個主題了,把上面的修改一去掉,删除相應的檔案就成了,免去了用內建包內建容易,去掉難的問題。

當然,你願意用內建包偶也沒有任何意見,青菜羅蔔各有所愛嘛。

九、手動添加自己的驅動

暫時沒有找到指定光驅路徑的方法。不過偶想可以通過程式設計,讀取HKLM\Software\Microsoft\Windows Nt鍵值Sourcepath得到原安裝路徑,

再通過Advanceinf install過程調用安裝驅動也許是個完美的解決辦法,XP的安裝程式不用說,它當然是知道你從哪裡安裝XP的。

為什麼不用Nlite內建?主要考慮以後驅動的更新,為了驅動更新,我們還得安裝installer 3,.net 2,Nlite,拷貝XP原盤,運作Nlite重新

內建新驅動。。。這樣的步子,時間慢長,還得儲存當時的Lite配置。暈~

當自己Diy的時候,總是希望內建自己主機闆的,顯示卡的,聲霸卡的驅動,免得安裝時到處翻驅動盤,偶可不希望用别人內建了自己用不上的驅動的CD光牒,偶還想留點空間內建自己喜歡的軟體呢,如果你有這樣的想法話,OK,跟我來,手動內建自己的驅動,不過需要你有一點讀懂Inf的基本知識,這點都做不到的話,我想你還是用Nlite內建算了。

以偶的Intel 945主機闆和Ati X550顯示卡為例,首先分析,打開Intel的主機闆驅動說明,看了一下,E文的,哦,原來如此,既帶了95,98的驅動,又有2000,XP的驅動,不僅如此,還有其它Intel晶片的驅動,呵呵,既如此,我們安裝的是XP呀,幹嘛還要95,98的驅動?Ati X500的經過

分析後也是如此,看來現在的驅動程式基本都是做成一體化了,不象以前的Nvidia的還要分2000的,XP的,現在不管你哪個作業系統,都可以安裝的。好,思路清楚了,驅動也要精簡!問題是如何取得這些驅動?方法當然是有的,用驅動精靈,優化大師,可提取出來的驅動好象都是什麼Oem02.inf之類的,某些軟體還提取不到CAT檔案,我可不想我的驅動安裝後顯示沒有經過WHQL硬體測試的。反複實驗後,我發現在安裝主機闆驅動時,系統中的臨時檔案夾中有解開的驅動檔案,再分析已安裝好的驅動,我找到了如下10個檔案和我的主機闆驅動相關,壓縮後共才31KB,原檔案是788KB,呵呵~~

945.cat

945.inf

dmi_pci.cat   Dmi_pci相關的

dmi_pci.inf

ich7core.cat ICH7南橋相關的

ich7core.inf

ich7ide.cat   ICH7南橋IDE相關的

ich7ide.inf

ich7usb.cat   ICH7南橋USB相關

ich7usb.inf

Ati X550的驅動解開到是好,安裝程式會幫你解開驅動的,目錄下那個CX_30152.inf就是對應的XP的驅動,另一個是2000的。打開分析,呵呵,看了半天,前面部分基本沒有什麼,好容易分析到最後幾個小段了,一眼看到[SourceDisksFiles]小節,呵呵,正是自己想要的呀,找到了!

[SourceDisksFiles]

ati2cqag.dll=1

ati2dvag.dll=1

ati2edxx.dll=1

ati2erec.dll=1

ati2evxx.dll=1

ati2evxx.exe=1

ati2mdxx.exe=1

ati2mtag.sys=1

ati3duag.dll=1

atiddc.dll=1

atidemgr.dll=1

atifglpf.xml=1

atiicdxx.dat=1

atiiiexx.dll=1

atikvmag.dll=1

atioglx1.dll=1

atioglxx.dll=1

atipdlxx.dll=1

atitvo32.dll=1

ativcaxx.cpa=1

ativcaxx.vp=1

ativckxx.vp=1

ativcoxx.dll=1

ativvaxx.dll=1

ativvpxx.vp=1

oemdspif.dll=1

一共是26個檔案,将相應的檔案拷到另一個目錄下,再将CX_30152.inf,CX_30152.Cat一起拷過來,壓縮,呵呵,得到了7.01MB的驅動檔案,

而原驅動檔案是11.7MB大,哈~真是爽呀。。

在Lang目錄下建立Intel和Ati兩個目錄,分别把各自的檔案拷到這兩個目錄下。

同理,打開Txtsetup.sif,在[SourceDisksNames.x86]小節後添加兩個源路徑

20 = %cdname%,%cdtagfilei%,,\i386\lang\ati

21 = %cdname%,%cdtagfilei%,,\i386\lang\intel

在[WinntDirectories]小節後面添加

308 = Temp\B_30397

跳到标志符後(這裡多次使用标志符,你終于明白為什麼要這麼做了吧?)添加

;here is my added (意思是從這裡開始是偶自己添加的)

ati2cqag.dll = 20,,,,,,,308,0,0

ati2dvag.dll = 20,,,,,,,308,0,0

ati2edxx.dll = 20,,,,,,,308,0,0

ati2erec.dll = 20,,,,,,,308,0,0

ati2evxx.dll = 20,,,,,,,308,0,0

ati2evxx.exe = 20,,,,,,,308,0,0

ati2mdxx.exe = 20,,,,,,,308,0,0

ati2mtag.sys = 20,,,,,,,308,0,0

ati3duag.dll = 20,,,,,,,308,0,0

atiddc.dll   = 20,,,,,,,308,0,0

atidemgr.dll = 20,,,,,,,308,0,0

atifglpf.xml = 20,,,,,,,308,0,0

atiicdxx.dat = 20,,,,,,,308,0,0

atiiiexx.dll = 20,,,,,,,308,0,0

atikvmag.dll = 20,,,,,,,308,0,0

atioglx1.dll = 20,,,,,,,308,0,0

atioglxx.dll = 20,,,,,,,308,0,0

atipdlxx.dll = 20,,,,,,,308,0,0

atitvo32.dll = 20,,,,,,,308,0,0

ativcaxx.cpa = 20,,,,,,,308,0,0

ativcaxx.vp = 20,,,,,,,308,0,0

ativckxx.vp = 20,,,,,,,308,0,0

ativcoxx.dll = 20,,,,,,,308,0,0

ativvaxx.dll = 20,,,,,,,308,0,0

ativvpxx.vp = 20,,,,,,,308,0,0

oemdspif.dll = 20,,,,,,,308,0,0

cx_30152.inf = 20,,,,,,,45,0,0

cx_30152.cat = 20,,,,,,,45,0,0

                        《-----空行分開,使我以後一看也知道上面是顯示卡的,下面是主機闆的驅動

dmi_pci.inf = 21,,,,,,,45,0,0

945.inf   = 21,,,,,,,45,0,0

ich7core.inf= 21,,,,,,,45,0,0

ich7ide.inf = 21,,,,,,,45,0,0

ich7usb.inf = 21,,,,,,,45,0,0

dmi_pci.cat = 21,,,,,,,45,0,0

945.cat   = 21,,,,,,,45,0,0

ich7core.cat= 21,,,,,,,45,0,0

ich7ide.cat = 21,,,,,,,45,0,0

ich7usb.cat = 21,,,,,,,45,0,0

;[drv of end]

打開Hivesft.sif,查找DevicePath。找到後改為下面的

HKLM,"SOFTWARE\Microsoft\Windows\CurrentVersion","DevicePath",0x00020002,"%systemRoot%\Temp;%SystemRoot%\inf"

至此驅動已內建進去了,不用修改Dosnet.inf,當然,你還可以用十一的方法在進系統後進行最後的處理,删除Temp中的臨時檔案。

在進行安裝的過程中,你可以留意到在Gui圖型安裝過程的T35到T34分鐘左右(就是我們看到的安裝還剩多少分鐘數),螢幕會閃兩下,意味着什麼呢?安裝程式找到了我的新驅動并自動安裝上去了,驅動內建成功了!安裝完後,打開裝置管理器看看,是不是主機闆和顯示卡驅動都上去了呢?再看驅動程式檔案詳細資訊,顯示數字簽名程式,呵呵,也就是偶為什麼要找CAT驅動原檔案的原因。

內建驅動的第二種方法是修改Syssetup.inf,偶實驗也是成功的。不過隻能內建沒有子目錄的驅動,象Ati的那個帶子目錄的就沒法了。

內建驅動的第三種方法應該就是将自己的驅動內建到Drivers.cab和Sp2.cab包裡,這是終級的最好辦法,有興趣的研究一下吧。

十、手動添加桌面桌面,使用者頭像,屏保,更新Flash插件

如果你不喜歡XP裡自帶的那些桌面,使用者頭像、屏保,人家內建的桌面,頭像,屏保可能不是你最喜歡的,自己動手來DIY吧,我的東西為什麼要和别人的一樣??所謂個性化的東西就是這個吧,OK,讓我們來把他們替換掉,添加新的桌面和屏保。

桌面一般采用Jpg的格式,如果不是,最好用圖像軟體來轉換一下,省點空間,桌面在Winxp中放在WINDOWS\Web\Wallpaper目錄下的,照例,檢視Txtsetup.sif中[WinntDirectories]中的定義,第一行的1981 = Web\Wallpaper這個就是我們想要的,隻要按照添加檔案的方法添加如xpdsk001.jpg = 1,,,,,,,1981,0,0的格式就成了,放I386中時不要忘了在Dosnet.inf中添加d1,xpdsk001.jpg一行,同時為了友善檔案名也使用8.3格式的,照例用二的方法進行壓縮,如果是放在Lang目錄中,就不用修改Dosnet.inf了。屏保是放在System32中的,內建方法一樣,不重複了。

使用者頭像是放在Documents and Settings\All Users\Application Data\Microsoft\User Account Pictures\Default Pictures中的,

一般可以采用替換法,頭像是48*48的24位BMP格式的真彩圖像,一共是23張,大家可以找找QQ的圖像,也可以找點好看的圖像,縮放成這種格式的。為了友善,偶做好了23張頭像,放在一個目錄中,同時編了個批處理如下:

copy face01.bm_ c:\winxp_vol\i386\airplane.bm_

copy face02.bm_ c:\winxp_vol\i386\astro.bm_

copy face03.bm_ c:\winxp_vol\i386\soccer.bm_

copy face04.bm_ c:\winxp_vol\i386\butterfl.bm_

copy face05.bm_ c:\winxp_vol\i386\cat.bm_

copy face06.bm_ c:\winxp_vol\i386\fish.bm_

copy face07.bm_ c:\winxp_vol\i386\pnkflowr.bm_

copy face08.bm_ c:\winxp_vol\i386\guitar.bm_

copy face09.bm_ c:\winxp_vol\i386\snwflake.bm_

copy face10.bm_ c:\winxp_vol\i386\beach.bm_

copy face11.bm_ c:\winxp_vol\i386\car.bm_

copy face12.bm_ c:\winxp_vol\i386\chess.bm_

copy face13.bm_ c:\winxp_vol\i386\dirtbike.bm_

copy face14.bm_ c:\winxp_vol\i386\dog.bm_

copy face15.bm_ c:\winxp_vol\i386\drip.bm_

copy face16.bm_ c:\winxp_vol\i386\duck.bm_

copy face17.bm_ c:\winxp_vol\i386\frog.bm_

copy face18.bm_ c:\winxp_vol\i386\horses.bm_

copy face19.bm_ c:\winxp_vol\i386\kick.bm_

copy face20.bm_ c:\winxp_vol\i386\liftoff.bm_

copy face21.bm_ c:\winxp_vol\i386\palmtree.bm_

copy face22.bm_ c:\winxp_vol\i386\redflowr.bm_

copy face23.bm_ c:\winxp_vol\i386\skater.bm_

這種方法不用費多少精力,而且也不用修改Txtsetup.sif,大概好象聽說有些作品CD光牒就是采用的這種方法。

第二種方法就是修改SHL_IMG.inf,不過同時也要修改Txtsetup.sif,有點複雜,不過可以控制拷貝多少個頭像。

[SHGINA.CopyFiles]

"%XP_FACE01%",face01.bmp

"%XP_FACE02%",face02.bmp

"%XP_FACE03%",face03.bmp

"%XP_FACE04%",face04.bmp

"%XP_FACE05%",face05.bmp

"%XP_FACE06%",face06.bmp

"%XP_FACE07%",face07.bmp

"%XP_FACE08%",face08.bmp

"%XP_FACE09%",face09.bmp

"%XP_FACE10%",face10.bmp

"%XP_FACE11%",face11.bmp

"%XP_FACE12%",face12.bmp

"%XP_FACE13%",face13.bmp

"%XP_FACE14%",face14.bmp

"%XP_FACE15%",face15.bmp

[Strings]

XP_FACE01 = "face001.bmp"

XP_FACE02 = "face002.bmp"

XP_FACE03 = "face003.bmp"

XP_FACE04 = "face004.bmp"

XP_FACE05 = "face005.bmp"

XP_FACE06 = "face006.bmp"

XP_FACE07 = "face007.bmp"

XP_FACE08 = "face008.bmp"

XP_FACE09 = "face009.bmp"

XP_FACE10 = "face010.bmp"

XP_FACE11 = "face011.bmp"

XP_FACE12 = "face012.bmp"

XP_FACE13 = "face013.bmp"

XP_FACE14 = "face014.bmp"

XP_FACE15 = "face015.bmp"

而且千萬不要輸錯了,否則可能引起安裝出錯。

更新Flash插件方法類似,采用替換法,系統自帶的是6.X的,現在都9.X版本了,高興了還可以修改一下swFlash.inf這個檔案,不修改也沒有什麼,反正這個插件随着Flash軟體的更新,年年都在更新的。

十一、自動以比較專業的型式安裝Winrar,極點五筆,Windows media play 10的方法

注意到V5版開始後Deepin的CD光牒在安裝XP後第一次進系統時左上角有個安裝程序處理框的提示麼?呵呵,怎麼實作的呢?有心人可以自己分析一下Deepin的CD光牒,這裡就不多說了。以前在更新IE的時候也看見過種對話框的,有意思。後來無意中又看到lyz0508網友發表的一篇關于無人值守更深入的文章,來龍去脈也就更清楚了,他也是在MS網站上看到關于RunOnceEx鍵值的說明文章才知道的。

讓我們來看看下面一段批處理的代碼Install.cmd

@echo off

IF EXIST D:\WIN51IP set CDROM=D:

IF EXIST E:\WIN51IP set CDROM=E:

IF EXIST F:\WIN51IP set CDROM=F:

IF EXIST G:\WIN51IP set CDROM=G:

IF EXIST H:\WIN51IP set CDROM=H:

IF EXIST I:\WIN51IP set CDROM=I:

IF EXIST J:\WIN51IP set CDROM=J:

IF EXIST K:\WIN51IP set CDROM=K:

IF EXIST L:\WIN51IP set CDROM=L:

IF EXIST M:\WIN51IP set CDROM=M:

IF EXIST N:\WIN51IP set CDROM=N:

IF EXIST O:\WIN51IP set CDROM=O:

IF EXIST P:\WIN51IP set CDROM=P:

IF EXIST Q:\WIN51IP set CDROM=Q:

IF EXIST R:\WIN51IP set CDROM=R:

IF EXIST S:\WIN51IP set CDROM=S:

IF EXIST T:\WIN51IP set CDROM=T:

IF EXIST U:\WIN51IP set CDROM=U:

IF EXIST V:\WIN51IP set CDROM=V:

IF EXIST W:\WIN51IP set CDROM=W:

IF EXIST X:\WIN51IP set CDROM=X:

IF EXIST Y:\WIN51IP set CDROM=Y:

IF EXIST Z:\WIN51IP set CDROM=Z:

SET KEY=HKLM\Software\Microsoft\Windows\CurrentVersion\RunOnceEx

REG ADD %KEY% /V TITLE /D "安裝常用軟體和系統更新" /f

REG ADD %KEY% /V Flags /T REG_DWORD /D 20 /f

REG ADD %KEY%\010 /VE /D "安裝 極點五筆 V5.1" /f

REG ADD %KEY%\010 /V 1 /D "%CDROM%\Soft\freewb51.EXE /S" /f

REG ADD %KEY%\020 /VE /D "安裝 微軟媒體播放器 V10.0" /f

REG ADD %KEY%\020 /V 1 /D "%CDROM%\Soft\wmp10.EXE /Q:A /R:N" /f

REG ADD %KEY%\030 /VE /D "安裝 WinRAR V3.61" /f

REG ADD %KEY%\030 /V 1 /D "%CDROM%\Soft\winrar361.EXE /S" /f

儲存為Install.cmd,放張XP的CD光牒在虛拟光驅中,然後在Winxp中運作一下這個檔案,放心,不是什麼病毒,懂點批處理的相信都看得懂什麼意思。

運作後,打開系統資料庫,定位到HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunOnceEx,看看有什麼新加的麼?

OK,看清楚後,讓我們重新啟動系統,再進系統時,這時會有點慢,請耐心等一下,肯定會進系統的,因為你的CD光牒裡還沒有添加這三個檔案呢,是以系統會查找一下,進去後你看到了什麼?呵呵,本節标題的意思你了解了吧?自由發揮吧。

另說一下,這段Install.cmd的方法,隻能用于CD光牒上安裝時不通過拷貝而直接安裝運作CD光牒上的軟體,如果XP是拷到硬碟某目錄下進行Dos安裝時,是無法找到你的XPCD光牒軟體的,因為這種通過探測XPCD光牒下有沒有Win51ip這個檔案來确定CD光牒所在地的方法是無法探測到硬碟某目錄下的Winxp的,同時如果在T12分鐘加載這個批處理的時候,螢幕會有一個黑屏閃過,不過不失為一種CD光牒安裝解決的好辦法吧,如果你不喜歡第九所說的驅動內建複雜方式,用這種方法還可以偷懶內建安裝驅動程式。

如果是采用直接修改Hivesft.inf的方法添加鍵值的方法進行檔案定位,又得采用Oem目錄方式,雖然可以解決檔案定位的問題,卻又增加了拷貝時間和Oem目錄,這個當然不是偶喜歡的,偶的CD光牒沒有Oem。對于這個問題,偶想了許久,也許程式設計才是唯一完美的方法,通過程式設計,讀取XP源盤安裝路徑,然後用上面的方法添加啟動鍵值,這樣無輪你是從哪裡安裝的Winxp,都可以找到CD光牒上的軟體。

十二、手動添加小工具,并在開始菜單中添加屬于自己的專用菜單欄

綠色小軟體一直是偶的最愛,小巧,實用,同樣的功能幹嘛非得要大型軟體上不可?添加方法當然如前面所示的,為了能友善的在指令行裡調用,偶認為還是放System32目錄下吧,當然收集這些綠軟可不是簡單的事,還得費點心思的,下載下傳了還要殺毒,測試,非綠色軟體還要自己綠化,非漢化軟體也還是得漢化一下,今天我們以Diskinfo磁盤空間占用率顯示軟體為例,這個在深山紅葉的PE中也有內建的,綠色的單檔案,首先殺毒測試後,将Diskinfo.exe進行壓縮,同理,如果你不是放在Lang目錄下的話,還得在Dosnet.inf中添加d1,Diskinfo.exe這行,我在Lang目錄下建立了一個Tools檔案夾,拷貝剛才壓縮好的檔案進去,打開Txtsetup.sif檔案,在[SourceDisksNames.x86]小節後面添加

23 = %cdname%,%cdtagfilei%,,\i386\lang\tools

然後跳到自己的标示符後面,添加下面一行

diskinfo.exe=23,,,,,,,2,0,0   意思就是讓安裝程式知道從Lang\Tools目錄下(23)拷到System32(2)目錄下,好,一切準備就緒。

不過你可不想老在Run中輸入指令行才能啟動這個程式吧?OK,讓我們把它添加到開始程式菜單中去吧。

接下來,我們解壓縮Syssetup.in_,打開這個Syssetup.inf檔案,定位到[StartMenuItems]小節,在未尾處添加如下行

system_utility =%system_utility%,0

再上面添加後緊跟着建立一個[system_utility]小節,添加

%DiskInfo_ID% =diskinfo.exe,diskinfo.exe,,1,%DiskInfo_ID_infotip%

再定位到檔案未尾,添加如下行

;add tools   -》定位符

system_utility = "系統實用工具"

DiskInfo_ID       = "磁盤資訊分析器"

DiskInfo_ID_infotip = "顯示您計算機磁盤檔案夾中檔案占用情況-DiskInfo"

順便定位到[StartMenuCommon]小節,把下面兩行注釋掉,開始菜單裡就不會出現windows catalog和設定程式通路和預設值兩項了

;%windowscatalog% = ,"[url]http://go.microsoft.com/fwlink/?LinkId=374[/url]",moricons.dll,107,"@%SystemRoot%\system32\shell32.dll,-22587","%SystemRoot%\system32\shell32.dll",22075

;%configureprograms% = appwiz.cpl,"control.exe appwiz.cpl,,3",moricons.dll,-114,"@%SystemRoot%\system32\xpsp1res.dll,-10078","%SystemRoot%\system32\xpsp1res.dll",10077

壓縮回去替換原檔案後,安裝看看,是不是出現了象附件一樣的菜單項,滑鼠放上面還顯示Tip資訊呢,就跟系統内部內建程式一樣,好玩不?

其它如內建音頻視訊×××內建也可以用這個方法,不過有些插件需要注冊一下,相信你搞得定這個的。

下面是偶添加的近二十個小軟清單,總體積不到5.1MB,僅做參考,也許太多了,不過都是偶常用的一些小工具。

TweakUI_ID       = "微軟系統設定工具"

TweakUI_ID_infotip = "微軟自家的TweakUI 2.10"

icesword_ID       = "冰刃反黑工具"

icesword_ID_infotip = "斬斷木馬黑客程式的利劍-IceSword 1.10"

regshot_ID       = "系統資料庫快照工具"

regshot_ID_infotip = "友善的找出兩個不同時刻系統資料庫的變化值-RegShot 1.7"

FileMon_ID       = "檔案讀寫螢幕"

FileMon_ID_infotip = "監視系統中各應用程式的讀寫情況-FileMon 7.02"

Vs_ID           = "系統服務檢視器"

Vs_ID_infotip     = "顯示或修改您計算機的服務程式-ViewService 1.2"

Usboot_ID       = "閃存啟動盤制作器"

Usboot_ID_infotip   = "啟動盤制作器Usboot 1.68版"

KenPlay_ID       = "Ken超小迷你播放器"

KenPlay_ID_infotip = "VC++做的僅30KB的播放器,可播放多種音頻、視訊格式(本系統可播放Real電影)-KenPlayer"

hijackth_ID       = "IE浏覽器反劫持工具"

hijackth_ID_infotip = "系統出了問題,就掃描一個結果放壇子裡吧-HijackThis 1.99"

upiea_ID         = "IE插件超級管理器"

upiea_ID_infotip   = "可以友善的免疫、解除安裝惡意網站強加的插件-Upiea 2005"

ones_ID         = "刻錄軟體Ones 2.0版"

ones_ID_infotip   = "超小的刻錄軟體,是時候放棄Nero了-Ones 2.0.325"

winp_w_picpath_ID       = "軟碟鏡象制作工具"

winp_w_picpath_ID_infotip = "已支援虛拟機VHD格式-Winp_w_picpath 8.0"

aspack_ID       = "可執行檔案壓縮器"

aspack_ID_infotip   = "程式員必備的DD,可壓縮EXE、DLL檔案-Aspack 2.12 "

ultraiso_ID       = "光碟鏡象制作工具"

ultraiso_ID_infotip = "軟碟通,ISO光碟伴侶-UltraISO 7.66"

ultras_ID       = "螢幕捕獲工具"

ultras_ID_infotip   = "僅幾百KB小巧的螢幕捕獲工具,支援Jpg,Bmp,Png,Gif格式-UltraSnap Pro 1.4"

screen_ID       = "螢幕錄像機"

screen_ID_infotip   = "小巧好用的螢幕錄像工具,生成AVI格式,支援系統視訊編碼,生成的檔案更小-Screen Record Studio"

hashcalc_ID       = "超強檔案指紋校驗機"

hashcalc_ID_infotip = "可以計算MD5、CRC32等檔案校驗值的工具-HashCalc"

reshacke_ID       = "可執行檔案資源修改器"

reshacke_ID_infotip = "老牌好用的檔案資源修改器-Resource Hacker"

peid_ID         = "Win32程式外殼掃描器"

peid_ID_infotip   = "可以探測EXE、DLL加的殼的類型-PEid 0.93"

imetool_ID       = "輸入法設定工具"

imetool_ID_infotip = "由Silence編寫的輸入法設定工具,可以安裝IME,自由設定熱鍵-ImeTool 2.6"

handy_ID         = "删除檔案恢複器"

handy_ID_infotip   = "可以恢複已被删除的檔案-HandyRecovery 1.0"

十三、移除Biosoem.*相關檔案後,在Everst測試軟體裡不顯示需要激活的方法。

這個是一個網友透露的,沒有征得他的同意之前,這裡還是空着吧。

十四、移除Nlite強加給我們的(也許有點不厚道,權當是讓你了解Nlite給你檔案中添加了什麼吧)

如果你讨厭在安裝XP後第一次進桌面時出現的那個黑色的Cmd框和添加在系統中的隐藏項,跟我來,手動移除這些DD。

打開Hivesft.inf,查找HKLM,"SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce","nlreg",0x00020000,"rundll32 advpack.dll,LaunchINFSection %SystemRoot%\inf\nlite.inf,T"

然後注釋掉。

打開txtsetup.sif,找到nlhive.inf = 16和nlite.inf = 16兩行,注釋掉

找到AddReg = nlhive.inf,nLite,注釋掉

找到nlhive.inf = 1,,,,,,_x,,3,3和nlite.inf = 1,,,,,,,20,0,0,注釋掉

打開Dosnet.net,找到d1,nlhive.inf和d1,nlite.inf兩行,注釋掉

解壓sysoc.in_,打開sysoc.inf,找到nLite=ocgen.dll,OcEntry,nLite.inf,HIDE,7和nLiteRF=ocgen.dll,OcEntry,nLite.inf,HIDE,7

注釋掉。

同時可以将Nlite.inf和Nlhive.inf裡想要的内容移到自己的系統資料庫優化檔案,然後就可以順手将這兩個檔案Del了。嘩,世界清靜了。如果你還有潔僻,還可以把每個Nlite修改過的檔案未尾的Nlite标志語删了,應該說删這些還可以節省一些空間吧,這下整個系統裡沒有Nlite影子了,完整的原XP,(當然除了Nlite破解的幾個Dll)呵呵,夠BT的吧?

十五、手動添加字型,并注冊這些新添加的字型

當我們需要內建字型時,(美工有時需要)有網友也試着修改TXTSETUP.sif檔案,在系統裡添加了字型,但安裝完成後,打開寫字闆什麼的,裡面沒有顯示出安裝的新字型,檢視字型檔案,也在Font目錄下呀,其實打開控制台中的字型後,系統會自動掃描字型,你的新字型在這個時候将被注冊,再打開寫字闆時,哎呀,出來了,呵呵。能不能自動注冊呀?問得好,好象也看見有人在問這個問題。答案就是系統資料庫裡,以內建華文仿宋體為例:這裡提供一個小技巧,修改TXTSETUP.sif時,不用把自己的檔案夾在原有的檔案中。最好是在未尾添加一個自己的标示符,如我自己添加時加了這麼一句->;here is my added,以後要修改這裡,隻要在查找中輸入;here,就可以直接跳到這裡來了。

将字型stfangso.ttf壓縮一下,放在i386\lang這裡,為什麼放這裡?一個是好查找,二個是不用修改Dosnet.inf了,因為Lang目錄在安裝是會被系統自動拷到臨時目錄中的,不信,你再在Lang目錄下建個空目錄,在第一次安裝需要重新開機時,不啟動系統,跑臨時檔案夾中去看看,是不是同樣有個相同的空目錄?

接着:打開TXTSETUP.sif,用上面的方法跳到自己的标示符這裡,添加stfangso.ttf=7,,,,,,,22,0,0這行字,7是指lang目錄,22是指系統Fonts

目錄,再打開Hivesft.inf,定位到HKLM,"SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts",,0x00000012這裡,在後面随便那行後面

添加HKLM,"Software\Microsoft\Windows NT\CurrentVersion\Fonts","%hwzs%",,"stzhongs.ttf"一行,再翻到未位的[strings]小節裡,

添加一行hwfs="華文仿宋",聰明的你一下看出門道了吧?嘿嘿,這樣處理後,安裝上Xp,打開寫字闆,看看字型是不是在那裡呢?看到這裡,你是不是想內建微軟的雅黑字型呢?(好象有點大)什麼是雅黑字型?暈,自己在網上搜一下相關的資訊吧,再自己內建試試。

另外,還流傳着一種用高手改造過的Simsun.ttc替換XP的宋體字型的方法,還可以節省一些空間,據說是來自雨浪的系統維護工具盤,壓縮後隻有1.2MB大,比原來的小很多,具體會不會出現Tingpu說的顯示某些如8号,12号的字會模糊的現象,沒試過,有興趣的可以試試。

十六、手動添加王碼五筆86版

本來不想寫這個的,因為太簡單了,看到有人在問這個問題,就當是給五筆愛好者一個回複吧。

在華軍網上有這個下載下傳,也就是Office 2000CD光牒裡自帶的那個老五筆,大多學86版五筆時間長點的都還在用這個吧,因為那時還沒有出極點五筆,不過偶并不喜歡用這個,極點才是偶的最愛,內建它隻是應一個同僚的要求。解開後共四個檔案,Winwb86.mb和Winwb86.ime這兩個就是86版的,檔案不大,照例用上面的方法進行壓縮,參照四的方法打開Hivesys.sif,在那個位置上添加

HKLM,"SYSTEM\CurrentControlSet\Control\Keyboard Layouts\E0100804","Layout File",0x00000000,"kbdus.dll"

HKLM,"SYSTEM\CurrentControlSet\Control\Keyboard Layouts\E0100804","Layout Text",0x00000000,"%KLT_92%"

HKLM,"SYSTEM\CurrentControlSet\Control\Keyboard Layouts\E0100804","IME File",0x00000000,"winwb86.ime"

[Strings]小節中添加

KLT_92="王碼五筆輸入法86版"

hivedef.sif檔案中preload處添加一個HKCU,"Keyboard Layout\Preload","4",0x00000002,"E0100804"

别忘了修改Txtsetup.sif和Dosnet.inf添加檔案。

OK,安裝看看,是不是出來了?

後記:其它象一些添加系統資料庫、服務優化的東西我想也不用多說了,在網上可以搜到一大堆的優化鍵值,儲存好後導入你的XP就成了。關于修改安裝畫面什麼的ZMN120上面讨論得有點多,不重複了。進階點的就象Deepin一樣自己用Delphi什麼的寫個程式,用上面的方法內建到自己的XP盤中就成了。Nlite的東西是不完美的,你不知道系統中是否還缺失什麼檔案,偶的感受是,隻要你不過份的精簡掉XP的元件,通過上面的後期處理,一般都不會出現什麼安裝字型缺失,插USB出現安裝驅動對話框,不能安裝SQL什麼之類的問題,都能正常安裝與使用。具體系統中還有什麼BUG呢?這個我不知道,是以大多數制作人都是采用發放作品,讓大家免費安裝測試,通過問題的回報或調整精簡方案,或添加檔案,或修改系統資料庫等方法加以解決。當然,這也無可厚非,人多力量大嘛,是以高手依然是高手,菜鳥還是菜鳥,研究技術的還是在研究技術,大自然之造化也。

偶不是什麼高手,隻是對技術感興趣罷了,Deepin也許做得比偶所述的還要更多,每次分析他的碟子都發現新的東西,他對技術執着的追求精神真的值得大家好好學習。CD光牒制作技術中偶認為PE和Nlite有很多的相通之處,通過制作,可以加深我們對系統内部的了解。再次總結一下Nlite研究需要具備的知識吧:

1.Dos基礎知識,很多古老的指令現在都還在發揮着它不可替代的作用。

2.系統資料庫知識,系統的核心。

3.INF檔案結構。

4.常用工具如REGSNAP系統資料庫監視,Resource Hacker資源修改的使用。

5.虛拟機調試工具的使用。

6.啟動CD光牒制作知識。

7.Nlite的使用

8.後期處理

9.E文,有時間多去老外的壇子裡逛逛,也許會有新的發現。([url]www.MSFN.org[/url]是個好去處)

要想做得更好,平面設計和程式設計是必不可少的。看了這麼多,也許你心裡在打退堂鼓了,呵呵,别怕,知識是靠積累才能得到的,沒有努力,哪來的成功?

看完本章後,你的感覺是什麼?還在羨慕别人做的XP精簡版麼?自己動手打造屬于自己的Winxp吧,上MS網上轉轉看看,偶也是在自己研究中找到了解決的辦法,細心加耐心,沒準你又發現比我更好的辦法呢?

注:此方法是用在精簡方案已定的情況下才做的,否則每次都修改,累死你。

又修改了一些錯别字,不好意思,國文水準太差,還老是廢話連篇的,實在有點過意不去,你能從中學到些什麼偶就很滿足了。

                      有感于E維社群精神,全文完-------記于2006年11月5日深夜

繼續閱讀