05
2008
08

Nlite后期处理技术

Nlite使用当然不想多说了,网上教程很多,自己挑自己需要的Windows组件吧。
唯一想说的是:在勾选去除组件时,多看看组件说明,如移除Outlook,将会失去什么功能?

一、Nlite完成后,将I386文件夹中Win9xmig、Win9xupg、Drw目录删除掉,可以节约大量的空间。

二、实现Windows,Dos,光盘安装三种安装方式

要使你的XP能在Windows下安装,也就是调用Winnt32.exe不出错,需要保留Compdata目录下的Drvmain.inf,和Ntcompat.inf两个文件,以及Winntupg目录下的Netmap.inf和Netupgrd.dll两个文件即可,这个方法大概是Deepin找到的,或许是某个老外的方法也不一定。当然前题是精简时不能移除DOS安装。这样你的Windows XP也可以实现Windows,Dos,光盘安装三种安装方式。另外更激进点的作法是把这三个INF里除了小节名,键值全删光的作法,又节省了一点空间。

三、进一步压缩i386目录下的部分文件,如下表:

ntprint.cat
ntprint.inf
regedit.exe
dbghelp.dll
exts.dll
imagehlp.dll
dbgeng.dll
intl.inf   (这个文件居然也可以压缩,而且都不用修改Txtsetup,真是太好了!)

提示:用Cabarc.exe(XP光盘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:为你光盘的位置


下面两个文件用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主题修改的帖子的方法。雨浪在说明这个问题时好象是写漏了一点,在下面第八点所说的小节中,有Wallpaper.MUI=@themeui.dll,-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的时候,总是希望集成自己主板的,显卡的,声卡的驱动,免得安装时到处翻驱动盘,偶可不希望用别人集成了自己用不上的驱动的光盘,偶还想留点空间集成自己喜欢的软件呢,如果你有这样的想法话,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,大概好象听说有些作品光盘就是采用的这种方法。

第二种方法就是修改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的光盘在安装XP后第一次进系统时左上角有个安装进程处理框的提示么?呵呵,怎么实现的呢?有心人可以自己分析一下Deepin的光盘,这里就不多说了。以前在更新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的光盘在虚拟光驱中,然后在Winxp中运行一下这个文件,放心,不是什么病毒,懂点批处理的相信都看得懂什么意思。
运行后,打开注册表,定位到HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunOnceEx,看看有什么新加的么?
OK,看清楚后,让我们重新启动系统,再进系统时,这时会有点慢,请耐心等一下,肯定会进系统的,因为你的光盘里还没有添加这三个文件呢,所以系统会查找一下,进去后你看到了什么?呵呵,本节标题的意思你理解了吧?自由发挥吧。

另说一下,这段Install.cmd的方法,只能用于光盘上安装时不通过拷贝而直接安装运行光盘上的软件,如果XP是拷到硬盘某目录下进行Dos安装时,是无法找到你的XP光盘软件的,因为这种通过探测XP光盘下有没有Win51ip这个文件来确定光盘所在地的方法是无法探测到硬盘某目录下的Winxp的,同时如果在T12分钟加载这个批处理的时候,屏幕会有一个黑屏闪过,不过不失为一种光盘安装解决的好办法吧,如果你不喜欢第九所说的驱动集成复杂方式,用这种方法还可以偷懒集成安装驱动程序。

如果是采用直接修改Hivesft.inf的方法添加键值的方法进行文件定位,又得采用Oem目录方式,虽然可以解决文件定位的问题,却又增加了拷贝时间和Oem目录,这个当然不是偶喜欢的,偶的光盘没有Oem。对于这个问题,偶想了许久,也许编程才是唯一完美的方法,通过编程,读取XP源盘安装路径,然后用上面的方法添加启动键值,这样无轮你是从哪里安装的Winxp,都可以找到光盘上的软件。

十二、手动添加小工具,并在开始菜单中添加属于自己的专用菜单栏

绿色小软件一直是偶的最爱,小巧,实用,同样的功能干嘛非得要大型软件上不可?添加方法当然如前面所示的,为了能方便的在命令行里调用,偶认为还是放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% = ,"http://go.microsoft.com/fwlink/?LinkId=374",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"
DiskInfo_ID       = "磁盘信息分析器"
DiskInfo_ID_infotip = "显示您计算机磁盘文件夹中文件占用情况-DiskInfo"
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"
winimage_ID       = "软盘镜象制作工具"
winimage_ID_infotip = "已支持虚拟机VHD格式-Winimage 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 2000光盘里自带的那个老五笔,大多学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也许做得比偶所述的还要更多,每次分析他的碟子都发现新的东西,他对技术执着的追求精神真的值得大家好好学习。光盘制作技术中偶认为PE和Nlite有很多的相通之处,通过制作,可以加深我们对系统内部的了解。再次总结一下Nlite研究需要具备的知识吧:

1.Dos基础知识,很多古老的命令现在都还在发挥着它不可替代的作用。
2.注册表知识,系统的内核。
3.INF文件结构。
4.常用工具如REGSNAP注册表监视,Resource Hacker资源修改的使用。
5.虚拟机调试工具的使用。
6.启动光盘制作知识。
7.Nlite的使用
8.后期处理
9.E文,有时间多去老外的坛子里逛逛,也许会有新的发现。(www.MSFN.org是个好去处)

要想做得更好,平面设计和编程是必不可少的。看了这么多,也许你心里在打退堂鼓了,呵呵,别怕,知识是靠积累才能得到的,没有努力,哪来的成功?

看完本章后,你的感觉是什么?还在羡慕别人做的XP精简版么?自己动手打造属于自己的Winxp吧,上MS网上转转看看,偶也是在自己研究中找到了解决的办法,细心加耐心,没准你又发现比我更好的办法呢?
注:此方法是用在精简方案已定的情况下才做的,否则每次都修改,累死你。

« 上一篇 下一篇 »

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。