Windows n合1启动光盘制作攻略

——实战Boot Scriptor

  在“Windows n合1 启动光盘制作攻略——Windows 2000 3合1与Windows XP 2合1启动光盘的制作方法”一文中我讲解了Windows 2000 3合1光盘与Windows XP 2合1的光盘的制作原理与制作方法,相信各位朋友一定会有所启发,有些人已经自己动手操作了。但是后来发现,上文中有些错误,当时没有考虑到,这里修正如下:

  (1)Windows 2000:如果集成了SP2或SP3,一定要将i386子目录中的文件txtsetup.sif复制到各自的安装目录下(或者干脆用i386中的同名文件全部替换),覆盖掉原来的文件,否则安装时系统报错。

  (2)Windows XP:用CDImage制作ISO映像文件时,原来的“-n”参数要修改为“-j1”,否则ISO文件能够通过虚拟机测试,但烧录到光盘后会找不到ASMS目录里的文件,因为路径刚刚超过8层。

  各位朋友制作好了2合1、3合1后,一定希望弄个5合1、6合1、8合1、xx合1,把各个版本的操作系统通通搜罗进来!很好,如果你有DVD刻录机的话,或者有1.3 GB的DDCD刻录机,我就来满足你的这个愿望:MS & Linux xx合1启动版,只要你的DVD足够大。但是我不会帮你做,我只提供一个通用的办法。还是让我们以Windows 2000 3合1为例来讲解吧。

  1. 所需工具

  (1)WPROSECT.DAT、WSRVSECT.DAT、ASRVSECT.DAT
  必须。Windows 2000光盘启动引导文件。这三个文件其实是一样的,只是其中原来的字符串“i386”分别被替换成了“wpro”、“wsrv”和“asrv”。
  下载地址:http://www.tech-hints.com/files/2kroot.zip
  (2)CDImage.exe(命令行界面)或CDImagegui.exe(图形界面)
  必须。可启动光盘镜像制作工具,生成标准的ISO文件,同时优化光盘上的文件。
  下载地址:http://www.tech-hints.com/prog/cdimage.zip,http://www.tech-hints.com/prog/cdimagegui.zip
  (3)WinImg
  可选。解Windows 2000安装软盘组的img文件。可替换方法是制作4张安装软盘,然后将4张软盘上的全部文件复制到硬盘相应目录下。
  下载地址:http://www.winimage.com/winimage/winima60.zip
  (4)UltraEdit
  可选。十六进制编辑器。
  下载地址:ftp://ultraedit.com/uedit32.zip
  (5)Windows 2000安装软盘组
  必须。用软盘引导机器,加载必要的系统文件及基本驱动程序,然后从光盘继续安装。
  Windows 2000安装软盘组在正版光盘的bootdisk目录下,三个版本的安装软盘是不同的,不能混用。
  (6)Windows 2000 Service Pack 3
  可选。将Windows 2000 Service Pack 3集成进Windows 2000的三个版本中,这样安装完毕的Windows 2000就集成了Service Pack 3,不必再单独安装了。
  下载地址:http://download.microsoft.com/download/win2000platform/SP/SP3/NT5/CN/W2Ksp3.exe
  (7)VMware(或Virtual PC)和Nero
  可选。测试制作完成的3合1镜像文件并烧录光盘。
  (8)Boot Scriptor
  必须。多重启动光盘管理器。这个软件的版本发展非常快,各版本之间的功能大不相同,目前能够下载的是1.2.3b,如果以后出了新版本,可以参考这里的做法。
  下载地址:http://tigger.cc.uic.edu/~mterlo1/bscript/distro/Boot%20Scriptor%20(1.2.3b).zip

  2. 目录及文件结构

  保证硬盘上有足够空余空间(假设将文件存放在硬盘d:,全部三个版本的原始文件约占用空间为1.24 GB,生成的镜像文件约为502 MB),建立如下目录结构,并复制文件cdimage.exe到相应位置:
  d:win2kcdimage.exe
  d:win2k
ootasrv
  d:win2k
ootwpro
  d:win2k
ootwsrv
  其中,d:win2k
oot是Windows 2000 3合1光盘的根目录,d:win2k
ootasrv用于存放Windows 2000高级服务器版文件,d:win2k
ootwsrv用于存放Windows 2000服务器版文件,d:win2k
ootwpro用于存放Windows 2000专业版文件。

  3. 文件复制

  将Windows 2000高级服务器版光盘上的文件全部复制到asrv目录,将Windows 2000服务器版光盘上的文件全部复制到wsrv目录,将Windows 2000专业版光盘上的文件全部复制到wpro目录。

  必须确保复制了全部文件和子目录,包括具有系统和隐藏属性的。

  复制完毕后,清除d:win2k
oot下全部文件和子目录的系统、隐藏和只读属性。

  将d:win2k
ootasrv目录下的cdrom_ia.5和cdrom_nt.5复制到d:win2k
oot,将d:win2k
ootwsrv目录下的cdrom_is.5复制到d:win2k
oot,将d:win2k
ootwpro目录下的cdrom_ip.5复制到d:win2k
oot。

  要点:d:win2k
oot下面必须有cdrom_ia.5、cdrom_is.5、cdrom_ip.5和cdrom_nt.5文件,这是我们欺骗安装程序的标志:这张光盘是Windows 2000的原始安装盘。

  4. 将Service Pack 3集成到Windows 2000各版本中

  运行w2ksp3.exe /x将Service Pack 3全部文件提取出来,假设提取到f: mp。在f: mpi386update下分别运行命令行命令:
  update.exe -s:-D:win2k
ootasrv
  update.exe -s:-D:win2k
ootwsrv
  update.exe -s:-D:win2k
ootwpro
  上述命令运行完毕后,Service Pack 3已经集成到Windows 2000各版本中,且d:win2k
ootasrv、d:win2k
ootwsrv、d:win2k
ootwpro各目录下应有一文件cdromsp3.tst,将其复制到d:win2k
oot。
  要点:d:win2k
oot下面必须有cdromsp3.tst文件,否则安装程序会要求我们插入Service Pack 3光盘。

  5. 跳过输入产品序列号

  查找各个版本i386目录,找到文件setupp.ini,用记事本打开,将其中的“Pid=xxxxx000”修改为“Pid=xxxxx270”,存盘退出。这一步不是必须的,只是图个方便。

  6. 配置安装程序

  Windows 2000正版光盘上有个bootdisk子目录,里面包含4张Windows 2000安装软盘镜像的img文件。用WinImg将各个版本bootdisk目录下的4个img文件分别释放到各自的系统文件目录下:
  d:win2k
ootwproootdisk的img文件全部释放到d:win2k
ootwpro下。
  d:win2k
ootwsrvootdisk的img文件全部释放到d:win2k
ootwsrv下。
  d:win2k
ootasrvootdisk的img文件全部释放到d:win2k
ootasrv下。

  要点:这是我们模拟软盘安装的关键,一定要连带system32目录(里面有两个文件)一起释放。

  如果集成了Service Pack 3,需要将wpro、wsrv、asrv下面的文件用各自i386目录下面的文件替换(实际上只需要替换txtsetup.sif就行了),即将启动软盘组中的文件也替换为集成Service Pack 3后的文件。注意:一定不要替换system32中的文件,否则无法安装。

  要替换这一大堆文件比较繁琐,可以用两个办法:
  (1)xxcopy法。下载xxcopy(http://www.xxcopy.com/),执行下面的命令:
  xxcopy d:win2k
ootwproi386 d:win2k
ootwpro /U /E /YY
  xxcopy d:win2k
ootwsrvi386 d:win2k
ootwsrv /U /E /YY
  xxcopy d:win2k
ootasrvi386 d:win2k
ootasrv /U /E /YY
替换完成后删除wpro、wsrv、asrv下面的空目录(xxcopy替换的副产品)即可。
  (2)批处理替换法。以wpro目录为例:
  dir d:win2k
ootwpro*.* >1.bat
  move d:win2k
ootwpro1.bat d:win2k
ootwproi386
  用Ultraedit编辑1.bat,只保留文件名,每个文件名一行,修改每行的命令为
  copy [文件名] d:win2k
ootwpro
  存盘退出,在d:win2k
ootwproi386目录下运行1.bat,d:win2k
ootwproi386目录没有而d:win2k
ootwpro有的文件不替换。其他两个版本如法炮制。

  7. 修改setupldr.bin和txtsetup.sif

  用Ultraedit打开d:win2k
ootasrvsetupldr.bin,用ASCII方式替换“i386”为“asrv”,共3处;
  用Ultraedit打开d:win2k
ootwsrvsetupldr.bin,用ASCII方式替换“i386”为“wsrv”,共3处;
  用Ultraedit打开d:win2k
ootwprosetupldr.bin,用ASCII方式替换“i386”为“wpro”,共3处。
  存盘退出。

  用Ultraedit打开d:win2k
ootasrv xtsetup.sif,替换“SetupSourcePath = ""”为“SetupSourcePath = "asrv"”;
  用Ultraedit打开d:win2k
ootwsrv xtsetup.sif,替换“SetupSourcePath = ""”为“SetupSourcePath = "wsrv"”;
  用Ultraedit打开d:win2k
ootwpro xtsetup.sif,替换“SetupSourcePath = ""”为“SetupSourcePath = "wpro"”。
  存盘退出。

  要点:这两个文件中的路径告诉安装程序从何处复制文件,必须与目录结构相匹配。

  8. 启动菜单的制作

  释放文件Boot Scriptor (1.2.3b).zip,将其中的bscript子目录复制到d:win2k
oot,将bscriptloader.bin(光盘引导器)移动到d:win2k,删除bscriptscriptw.com,bscriptmodules中的文件不动(尽管有些是我们不需要的,但文件很小)。

  释放2kroot.zip,将其中的文件WPROSECT.DAT、WSRVSECT.DAT、ASRVSECT.DAT复制到d:win2k
ootscript。

  9. 编写启动菜单配置文件bscriptscript.ini
  start:
  clear
  print c "

c17===================================================
"
  print c "c17  c1fWindows 2000 Setupc17  
"
  print c "c17—————————————————
"
  print c "c17  
"
  print c "c17  c1f1c17 Windows 2000 Professional  
"
  print c "c17  c1f2c17 Windows 2000 Server  
"
  print c "c17  c1f3c17 Windows 2000 Advanced Server  
"
  print c "c17  
"
  print c "c17  c1fFc17 Boot from first Floppy Drive  
"
  print c "c17 c1f Escc17 Boot from first Hard Disk  
"
  print c "c17  
"
  print c "c17—————————————————
"
  print c "c17  Select the item and then press Enter  
"
  print c "c17===================================================
"
  ;
  start1:
  call drawscrn
  setpos 1 7
  print c "c3f  1c31 Windows 2000 Professional  "
  key1:
  getkey
  call mainkey
  onkey space goto item_1
  onkey enter goto item_1
  onkey up goto start5
  onkey down goto start2
  goto key1
  ;
  start2:
  call drawscrn
  setpos 1 8
  print c "c3f  2c31 Windows 2000 Server  "
  key2:
  getkey
  call mainkey
  onkey space goto item_2
  onkey enter goto item_2
  onkey up goto start1
  onkey down goto start3
  goto key2
  ;
  start3:
  call drawscrn
  setpos 1 9
  print c "c3f  3c31 Windows 2000 Advanced Server  "
  key3:
  getkey
  call mainkey
  onkey space goto item_3
  onkey enter goto item_3
  onkey up goto start2
  onkey down goto start4
  goto key3
  ;
  start4:
  call drawscrn
  setpos 1 11
  print c "c3f  Fc31 Boot from first Floppy Drive  "
  key4:
  getkey
  call mainkey
  onkey space boot 0x00
  onkey enter boot 0x00
  onkey up goto start3
  onkey down goto start5
  goto key4
  ;
  start5:
  call drawscrn
  setpos 1 12
  print c "c3f Escc31 Boot from first Hard Disk  "
  key5:
  getkey
  call mainkey
  onkey space boot 0x80
  onkey enter boot 0x80
  onkey up goto start4
  onkey down goto start1
  goto key5
  ;
  mainkey:
  onkey 1 goto item_1
  onkey 2 goto item_2
  onkey 3 goto item_3
  onkey f boot 0x00
  onkey F boot 0x00
  onkey esc boot 0x80
  return
  ;
  item_1:
  cls
  chain WPROSECT.DAT
  goto start1
  ;
  item_2:
  cls
  chain WSRVSECT.DAT
  goto start2
  ;
  item_3:
  cls
  chain ASRVSECT.DAT
  goto start3
  ;
  drawscrn:
  setpos 1 7
  print c "c1f  1c17 Windows 2000 Professional  
"
  print c "c1f  2c17 Windows 2000 Server  
"
  print c "c1f  3c17 Windows 2000 Advanced Server  
"
  print c "
"
  print c "c1f  Fc17 Boot from first Floppy Drive  
"
  print c "c1f Escc17 Boot from first Hard Disk  "
  return
  ;
  eof:
  ;
  这个菜单配置文件看起来挺复杂,实际上大量的代码都是为了使用光标键而重复的。除了界面有点简陋外(你可以加上ANSI制表符等高位DOS扩展符),这个配置文件实现了彩色字符、光标键选择、从软盘启动、从硬盘启动等多种功能。

  10. 制作ISO文件

  CDImage程序加“-o”参数优化后生成的镜像文件约为502 MB,我们假设将它存放在f:盘的根目录下,命令行命令如下:
  d:win2kcdimage -lWin2K-3in1 -t01/10/2000,12:00:00 -g -h -j1 -o -m -bd:win2kloader.bin d:win2k
oot f:w2k-3in1.iso

  11. 测试ISO文件

  用VMware加载w2k-3in1.iso文件,设置第1启动设备为光驱。从光盘启动后,系统将显示启动菜单,将显示条移动到相应的项目上,然后按回车键;也可以直接按快捷键。
  提示:如果仅仅为了测试菜单的效果,可以不删除bscriptscriptw.com,直接运行bscriptw.com,它将显示BscriptBscript.Ini的效果。

  12. 增加特殊文件

  可以根据个人的爱好,在光盘上再增加一些特殊文件,例如新版IE、DirectX及一些专用的驱动程序等,只需将其复制到d:win2k
oot目录下,并重新制作ISO文件。

  13.烧录光盘

  ISO镜像文件测试无误后,即可用自己熟悉的烧录软件软件(例如Nero)将其烧录到光盘。 这样,一张可启动的Windows 2000 3合1光盘就制作完成了。当然,最好再用光盘正式地安装一遍,因为VMware测试与光盘测试是不完全一样的。

  14.集成Windows XP

  Windows XP与Windows 2000的制作原理是一样的,如果要集成进去,只需要修改WPROSECT.DAT,将其中的“wpro”改为XP文件所在目录即可,并修改启动菜单配置文件bscriptscript.ini。这样的一张光盘优化以后大概有1 GB(Windows 2000与Windows XP相同的文件不多),你要考虑的首要问题是用什么盘来烧录。

  15.DOS、Windows 9x与Linux等可启动型n合1的制作

  DOS、Windows 9x和Linux等启动光盘都是采用单张软盘映像的,如何增加这类系统呢?简单得很:增加一个启动选项,并将BSCRIPT.INI中的chain WPROSECT.DAT修改为启动软盘映像就行了。假设软盘映像为boot1.img,具体方法有三种:
  (1)diskemu boot1.img
  (2)memdisk boot1.img
  (3)isolinux boot1.img
  这几种方法都需要用到bscriptmodules中的相应模块。三种方法的效果是不一样的,其中diskemu模拟法速度最快,兼容性最好,只在1.2.3b版本中刚刚引进,建议采用。其他两种是ISOLINUX所采用的传统方法。

  16.特色点评

  优点:彩色菜单,光标移动,xx合1,……,这是目前最最新、最最牛、最最棒、最最神奇、最最最最……的方法。
  缺点:Boot Scriptor的发展太快,各版本之间有点不兼容,但说实在的,后面的版本越来越好,尤其是diskemu的引入,最激动人心,最大得人心,最大快人心,几乎彻底解决了映像文件的兼容性问题。

Windows n合1 启动光盘制作攻略

——Windows 2000 3合1与Windows XP 2合1启动光盘的制作方法

  Windows 2000 3合1光盘(简体中文专业版+简体中文服务器版+简体中文高级服务器版)已经在街面上流行很久了,Windows XP 2合1的光盘(简体中文专业版+简体中文家庭版)最近也开始上街了。这些n合1的光盘中,有些是不能用光盘进行启动的,我们只能在DOS下安装;有些是能够光盘启动并从光盘正常安装的。不能启动的n合1光盘的制作非常简单,我们没有必要去讨论,我们最感兴趣的是哪些能够用光盘启动并正常安装的n合1光盘,本文的宗旨就是研究一下这类光盘的基本原理及制作方法。

  可启动型n合1光盘使用了多重启动光盘技术,这种技术近几年来开始流行,但目前尚未形成统一的工业标准,有多种方法可以实现它。最初,该技术采用的工具是CD启动模拟器:diskemu1x(我们应该感谢Bart和Gary Tong,他们总能够写出一些能够完成伟大工程的小程序)。diskemu1x功能很强大,使用也比较容易,但很可惜,Bart已经不再继续开发它了(参见http://www.nu2.nu/diskemu/)。所幸的是,Bart并没有放弃对Windows 2000 3合1的兴趣,他搞了一个体积更小巧,使用更容易,针对性更强的东西:w2kall.bin,Windows 2000通用启动引导器(再次感谢Bart)。目前街面上还没有使用w2kall制作的Windows 2000 3合1光盘。由于w2kall.bin附带的说明非常简短,网上更是无法查找到相关的信息,有鉴于此,我对它进行了一番研究,用w2kall成功地制作出了Windows 2000 3合1光盘。经过另一番试验,又成功地制作出了Windows XP 2合1光盘。下面就是我的一些心得体会,愿与各位朋友共享。

一、Windows 2000/XP多重启动光盘的启动原理

  Windows 2000/XP各版本的原始安装光盘是单重启动,其引导文件中固化了光盘根目录下的i386目录(这一点给制作多重启动的n合1光盘制造了最大的障碍),该目录中不仅存放了Windows 2000/XP的系统文件,而且还存放了安装所需的安装文件和驱动程序。其引导过程如下:

  光盘引导->setupldr->ntdetect->加载驱动程序->读txtsetup.sif->开始光盘安装

  上述多个步骤中都涉及了光盘根目录下的i386目录,而我们将制作的n合1光盘是多重启动的,每个版本都包含一个i386子目录,它与单重启动光盘的目录结构不同(在光盘根目录与i386目录之间多了1层版本目录),因此不能简单地照搬单重启动的引导过程。所幸前辈高手们早就碰到了这个难题,而且也非常巧妙地解决了,那就是使用Windows 2000/XP的安装软盘组:用软盘启动计算机,依次加载所需驱动程序及必要的系统文件,从而避开安装时到光盘根目录下的i386目录加载安装文件和驱动程序,然后安装程序再从Windows 2000/XP安装光盘中安装复制其余的文件,继续安装。我们所要模拟的就是这一过程。改造后的n合1光盘引导过程如下:

  光盘引导->选择版本模块->模拟软盘启动->setupldr->ntdetect->加载驱动程序->读txtsetup.sif->开始光盘安装

  并将上述多个步骤中都涉及到的光盘根目录下的i386目录更改为光盘根目录下的版本目录(该目录中将存放安装软盘组上的文件)。

二、Windows 2000 3合1启动光盘的制作

  1. 所需工具

  (1)w2kall.bin
  必须。Windows 2000光盘启动引导文件。
  下载地址:http://www.tech-hints.com/files/w2kall.zip
  (2)CDImage.exe(命令行界面)或CDImagegui.exe(图形界面)
  必须。可启动光盘镜像制作工具,生成标准的ISO文件,同时具有优化光盘上文件的功能,使相同的文件只刻录1个,其他的文件都连接到该文件,有点类似Unix的功能。
  下载地址:http://www.tech-hints.com/prog/cdimage.zip,http://www.tech-hints.com/prog/cdimagegui.zip
  (3)WinImg
  可选。解Windows 2000安装软盘组的img文件。可替换方法是制作4张安装软盘,然后将4张软盘上的全部文件复制到硬盘相应目录下。
  下载地址:http://www.winimage.com/winimage/winima60.zip
  (4)UltraEdit
  可选。十六进制编辑器,修改启动引导文件中的显示文字。
  下载地址:ftp://ultraedit.com/uedit32.zip
  (5)Windows 2000安装软盘组
  必须。用软盘引导机器,加载必要的系统文件及基本驱动程序,然后从光盘继续安装。
  Windows 2000安装软盘组在正版光盘的bootdisk目录下,三个版本的安装软盘是不同的,不能混用。
  (6)Windows 2000 Service Pack 3
  可选。将Windows 2000 Service Pack 3集成进Windows 2000的三个版本中,这样安装完毕的Windows 2000就集成了Service Pack 3,不必再单独安装了。
  下载地址:http://download.microsoft.com/download/win2000platform/SP/SP3/NT5/CN/W2Ksp3.exe
  (7)VMware(或Virtual PC)和Nero
  可选。测试制作完成的3合1镜像文件并烧录光盘。

  2. 目录及文件结构

  保证硬盘上有足够空余空间(假设将文件存放在硬盘d:,全部三个版本的原始文件约占用空间为1.24 GB,生成的镜像文件约为502 MB),建立如下目录结构,并复制文件w2kall.bin、cdimage.exe到相应位置:
  d:win2kw2kall.bin
  d:win2kcdimage.exe
  d:win2k
ootasrv
  d:win2k
ootwpro
  d:win2k
ootwsrv
  其中,d:win2k
oot是Windows 2000 3合1光盘的根目录,d:win2k
ootasrv用于存放Windows 2000高级服务器版文件,d:win2k
ootwsrv用于存放Windows 2000服务器版文件,d:win2k
ootwpro用于存放Windows 2000专业版文件。
  要点:“asrv”、“wsrv”和“wpro”的目录名称是固定在w2kall.bin中的,只能是4个字符长度。若需要存放在其他目录下,需要用UltraEdit修改w2kall.bin文件,找到“WPROWSRVASRV”,将其替换为其他名称,并相应修改目录结构。此外,还必须在后面的配置中进行相应修改。

  3. 文件复制

  将Windows 2000高级服务器版光盘上的文件全部复制到asrv目录,将Windows 2000服务器版光盘上的文件全部复制到wsrv目录,将Windows 2000专业版光盘上的文件全部复制到wpro目录。
  必须确保复制了全部文件和子目录,包括具有系统和隐藏属性的。
  复制完毕后,清除d:win2k
oot下全部文件和子目录的系统、隐藏和只读属性。
  将d:win2k
ootasrv目录下的cdrom_ia.5和cdrom_nt.5复制到d:win2k
oot,将d:win2k
ootwsrv目录下的cdrom_is.5复制到d:win2k
oot,将d:win2k
ootwpro目录下的cdrom_ip.5复制到d:win2k
oot。
  要点:d:win2k
oot下面必须有cdrom_ia.5、cdrom_is.5、cdrom_ip.5和cdrom_nt.5文件,这是我们欺骗安装程序的标志:这张光盘是Windows 2000的原始安装盘。

  4. 将Service Pack 3集成到Windows 2000各版本中

  运行w2ksp3.exe /x将Service Pack 3全部文件提取出来,假设提取到f: mp。在f: mpi386update下分别运行命令行命令:
  update.exe -s:-D:win2k
ootasrv
  update.exe -s:-D:win2k
ootwsrv
  update.exe -s:-D:win2k
ootwpro
  上述命令运行完毕后,Service Pack 3已经集成到Windows 2000各版本中,且d:win2k
ootasrv、d:win2k
ootwsrv、d:win2k
ootwpro各目录下应有一文件cdromsp3.tst,将其复制到d:win2k
oot。
  要点:d:win2k
oot下面必须有cdromsp3.tst文件,否则安装程序会要求我们插入Service Pack 3光盘。

  5. 跳过输入产品序列号

  查找各个版本i386目录,找到文件setupp.ini,用记事本打开,将其中的“Pid=xxxxx000”修改为“Pid=xxxxx270”,存盘退出。这一步不是必须的,只是图个方便。

  6. 配置安装程序

  Windows 2000正版光盘上有个bootdisk子目录,里面包含4张Windows 2000安装软盘镜像的img文件。用WinImg将各个版本bootdisk目录下的4个img文件分别释放到各自的系统文件目录下:
  d:win2k
ootwproootdisk的img文件全部释放到d:win2k
ootwpro下。
  d:win2k
ootwsrvootdisk的img文件全部释放到d:win2k
ootwsrv下。
  d:win2k
ootasrvootdisk的img文件全部释放到d:win2k
ootasrv下。
  要点:这是我们模拟软盘安装的关键,一定要连带system32目录(里面有两个文件)一起释放。
  从d:win2k
ootwproi386目录中复制bootfix.bin,将其分别粘贴到d:win2k
ootasrv、d:win2k
ootwpro和d:win2k
ootwsrv。该文件的作用就是光盘启动后显示一条信息“Press any key to boot from CD.”,并等待5秒钟,若没有按键,则从硬盘启动;否则从光盘启动。
  如果觉得5秒的延时太短,可以用UltraEdit编辑该文件,找到“Press any key to boot from CD.”后面的“49 00 12 00”,将“49”改为“AA”延时可达10秒,改为“FF”延时可达15秒。
  如果集成了Service Pack 3,需要将wpro、wsrv、asrv下面的文件用各自i386目录下面的文件替换(实际上只需要替换txtsetup.sif就行了),即将启动软盘组中的文件也替换为集成Service Pack 3后的文件。注意:一定不要替换system32中的文件,否则无法安装。
  要替换这一大堆文件比较繁琐,可以用两个办法:
  (1)xxcopy法。下载xxcopy(http://www.xxcopy.com/),执行下面的命令:
  xxcopy d:win2k
ootwproi386 d:win2k
ootwpro /U /E /YY
  xxcopy d:win2k
ootwsrvi386 d:win2k
ootwsrv /U /E /YY
  xxcopy d:win2k
ootasrvi386 d:win2k
ootasrv /U /E /YY
替换完成后删除wpro、wsrv、asrv下面的空目录(xxcopy替换的副产品)即可。
  (2)批处理替换法。以wpro目录为例:
  dir d:win2k
ootwpro*.* >1.bat
  move d:win2k
ootwpro1.bat d:win2k
ootwproi386
  用Ultraedit编辑1.bat,只保留文件名,每个文件名一行,修改每行的命令为
  copy [文件名] d:win2k
ootwpro
  存盘退出,在d:win2k
ootwproi386目录下运行1.bat,d:win2k
ootwproi386目录没有而d:win2k
ootwpro有的文件不替换。其他两个版本如法炮制。

  7. 修改setupldr.bin和txtsetup.sif

  用Ultraedit打开d:win2k
ootasrvsetupldr.bin,用ASCII方式替换“i386”为“asrv”,共3处;
  用Ultraedit打开d:win2k
ootwsrvsetupldr.bin,用ASCII方式替换“i386”为“wsrv”,共3处;
  用Ultraedit打开d:win2k
ootwprosetupldr.bin,用ASCII方式替换“i386”为“wpro”,共3处。
  存盘退出。
  用Ultraedit打开d:win2k
ootasrv xtsetup.sif,替换“SetupSourcePath = ""”为“SetupSourcePath = "asrv"”;
  用Ultraedit打开d:win2k
ootwsrv xtsetup.sif,替换“SetupSourcePath = ""”为“SetupSourcePath = "wsrv"”;
  用Ultraedit打开d:win2k
ootwpro xtsetup.sif,替换“SetupSourcePath = ""”为“SetupSourcePath = "wpro"”。
  存盘退出。
  要点:这两个文件中的路径告诉安装程序从何处复制文件,必须与目录结构相匹配。

  8. 启动菜单的修改

  Windows 2000启动引导文件w2kall.bin中已经内置了Windows 2000 3合1的启动菜单:
  [A] Windows 2000 Professional – English
  [B] Windows 2000 Server – English
  [C] Windows 2000 Advanced Server – English
  Choose an option and press [Enter]:
  所以我们不需再单独配置启动菜单。若需要修改该菜单,只需用UltraEdit打开w2kall.bin,找到相应的ASCII字符串,并修改为合适的字符串。例如,去掉所有的“ – English”。

  9. 配置完毕的目录结构及文件列表

  d:win2kcdimage.exe
  d:win2kw2kall.bin
  d:win2k
ootcdrom_ia.5
  d:win2k
ootcdrom_ip.5
  d:win2k
ootcdrom_is.5
  d:win2k
ootcdrom_nt.5
  d:win2k
ootcdromsp3.tst
  d:win2k
ootasrv1394bus.sy_
  d:win2k
ootasrvabp480n5.sy_
  d:win2k
ootasrvacpi.sy_
  d:win2k
ootasrvacpiec.sy_
  d:win2k
ootasrvadpu160m.sy_
  d:win2k
ootasrvaha154x.sy_
  d:win2k
ootasrvaic116x.sy_
  d:win2k
ootasrvaic78u2.sy_
  d:win2k
ootasrvaic78xx.sy_
  d:win2k
ootasrvamsint.sy_
  d:win2k
ootasrvasc.sy_
  d:win2k
ootasrvasc3350p.sy_
  d:win2k
ootasrvasc3550.sy_
  d:win2k
ootasrvatapi.sy_
  d:win2k
ootasrvautorun.inf
  d:win2k
ootasrviosinfo.inf
  d:win2k
ootasrvootfix.bin
  d:win2k
ootasrvootfont.bin
  d:win2k
ootasrvootvid.dl_
  d:win2k
ootasrvuslogic.sy_
  d:win2k
ootasrvc_936.nl_
  d:win2k
ootasrvcd20xrnt.sy_
  d:win2k
ootasrvcdfs.sy_
  d:win2k
ootasrvcdrom.sy_
  d:win2k
ootasrvcdrom_ia.5
  d:win2k
ootasrvcdrom_nt.5
  d:win2k
ootasrvcdromsp3.tst
  d:win2k
ootasrvclass2.sy_
  d:win2k
ootasrvclasspnp.sy_
  d:win2k
ootasrvcpqarray.sy_
  d:win2k
ootasrvcpqarry2.sy_
  d:win2k
ootasrvcpqfcalm.sy_
  d:win2k
ootasrvcpqfws2e.sy_
  d:win2k
ootasrvdac960nt.sy_
  d:win2k
ootasrvdisk.sy_
  d:win2k
ootasrvdisk101
  d:win2k
ootasrvdisk102
  d:win2k
ootasrvdisk103
  d:win2k
ootasrvdisk104
  d:win2k
ootasrvdmboot.sy_
  d:win2k
ootasrvdmio.sy_
  d:win2k
ootasrvdmload.sy_
  d:win2k
ootasrvfastfat.sy_
  d:win2k
ootasrvfd16_700.sy_
  d:win2k
ootasrvfdc.sy_
  d:win2k
ootasrvfireport.sy_
  d:win2k
ootasrvflashpnt.sy_
  d:win2k
ootasrvflpydisk.sy_
  d:win2k
ootasrvftdisk.sy_
  d:win2k
ootasrvhal.dl_
  d:win2k
ootasrvhalaacpi.dl_
  d:win2k
ootasrvhalacpi.dl_
  d:win2k
ootasrvhalapic.dl_
  d:win2k
ootasrvhidclass.sy_
  d:win2k
ootasrvhidparse.sy_
  d:win2k
ootasrvhidusb.sy_
  d:win2k
ootasrvi8042prt.sy_
  d:win2k
ootasrvini910u.sy_
  d:win2k
ootasrvintelide.sy_
  d:win2k
ootasrvipsraidn.sy_
  d:win2k
ootasrvisapnp.sy_
  d:win2k
ootasrvkbdclass.sy_
  d:win2k
ootasrvkbdhid.sy_
  d:win2k
ootasrvkbdus.dll
  d:win2k
ootasrvl_intl.nl_
  d:win2k
ootasrvlbrtfdc.sy_
  d:win2k
ootasrvlp6nds35.sy_
  d:win2k
ootasrvmountmgr.sy_
  d:win2k
ootasrvmraid35x.sy_
  d:win2k
ootasrv
crc710.sy_
  d:win2k
ootasrv
tdetect.com
  d:win2k
ootasrv
tfs.sy_
  d:win2k
ootasrv
tkrnlmp.ex_
  d:win2k
ootasrvohci1394.sy_
  d:win2k
ootasrvopenhci.sy_
  d:win2k
ootasrvpartmgr.sy_
  d:win2k
ootasrvpci.sy_
  d:win2k
ootasrvpciide.sy_
  d:win2k
ootasrvpciidex.sy_
  d:win2k
ootasrvpcmcia.sy_
  d:win2k
ootasrvql1080.sy_
  d:win2k
ootasrvql10wnt.sy_
  d:win2k
ootasrvql1240.sy_
  d:win2k
ootasrvql2100.sy_
  d:win2k
ootasrv
ead1st.txt
  d:win2k
ootasrv
eadme.doc
  d:win2k
ootasrvsbp2port.sy_
  d:win2k
ootasrvscsiport.sy_
  d:win2k
ootasrvserenum.sy_
  d:win2k
ootasrvserial.sy_
  d:win2k
ootasrvsetup.exe
  d:win2k
ootasrvsetupdd.sy_
  d:win2k
ootasrvsetupldr.bin
  d:win2k
ootasrvsetupreg.hiv
  d:win2k
ootasrvsfloppy.sy_
  d:win2k
ootasrvsparrow.sy_
  d:win2k
ootasrvspcmdcon.sys
  d:win2k
ootasrvspddlang.sy_
  d:win2k
ootasrvspnotes.htm
  d:win2k
ootasrvsym_hi.sy_
  d:win2k
ootasrvsymc810.sy_
  d:win2k
ootasrvsymc8xx.sy_
  d:win2k
ootasrv ffsport.sy_
  d:win2k
ootasrv xtsetup.sif
  d:win2k
ootasrvuhcd.sy_
  d:win2k
ootasrvultra66.sy_
  d:win2k
ootasrvusbd.sy_
  d:win2k
ootasrvusbhub.sy_
  d:win2k
ootasrvusbstor.sy_
  d:win2k
ootasrvvga.sy_
  d:win2k
ootasrvvgaoem.fo_
  d:win2k
ootasrvvideoprt.sy_
  d:win2k
ootasrvwmilib.sy_
  d:win2k
ootasrvootdisk……
  d:win2k
ootasrvclients……
  d:win2k
ootasrvi386……
  d:win2k
ootasrvprinters……
  d:win2k
ootasrvsetuptxt……
  d:win2k
ootasrvsupport……
  d:win2k
ootasrvsystem32
tdll.dll
  d:win2k
ootasrvsystem32smss.exe
  d:win2k
ootasrvvalueadd……
  d:win2k
ootwpro1394bus.sy_
  d:win2k
ootwproabp480n5.sy_
  d:win2k
ootwproacpi.sy_
  d:win2k
ootwproacpiec.sy_
  d:win2k
ootwproadpu160m.sy_
  d:win2k
ootwproaha154x.sy_
  d:win2k
ootwproaic116x.sy_
  d:win2k
ootwproaic78u2.sy_
  d:win2k
ootwproaic78xx.sy_
  d:win2k
ootwproamsint.sy_
  d:win2k
ootwproasc.sy_
  d:win2k
ootwproasc3350p.sy_
  d:win2k
ootwproasc3550.sy_
  d:win2k
ootwproatapi.sy_
  d:win2k
ootwproautorun.inf
  d:win2k
ootwproiosinfo.inf
  d:win2k
ootwproootfix.bin
  d:win2k
ootwproootfont.bin
  d:win2k
ootwproootvid.dl_
  d:win2k
ootwprouslogic.sy_
  d:win2k
ootwproc_936.nl_
  d:win2k
ootwprocd20xrnt.sy_
  d:win2k
ootwprocdfs.sy_
  d:win2k
ootwprocdrom.sy_
  d:win2k
ootwprocdrom_ip.5
  d:win2k
ootwprocdrom_nt.5
  d:win2k
ootwprocdromsp3.tst
  d:win2k
ootwproclass2.sy_
  d:win2k
ootwproclasspnp.sy_
  d:win2k
ootwprocpqarray.sy_
  d:win2k
ootwprocpqarry2.sy_
  d:win2k
ootwprocpqfcalm.sy_
  d:win2k
ootwprocpqfws2e.sy_
  d:win2k
ootwprodac960nt.sy_
  d:win2k
ootwprodisk.sy_
  d:win2k
ootwprodisk101
  d:win2k
ootwprodisk102
  d:win2k
ootwprodisk103
  d:win2k
ootwprodisk104
  d:win2k
ootwprodmboot.sy_
  d:win2k
ootwprodmio.sy_
  d:win2k
ootwprodmload.sy_
  d:win2k
ootwprofastfat.sy_
  d:win2k
ootwprofd16_700.sy_
  d:win2k
ootwprofdc.sy_
  d:win2k
ootwprofireport.sy_
  d:win2k
ootwproflashpnt.sy_
  d:win2k
ootwproflpydisk.sy_
  d:win2k
ootwproftdisk.sy_
  d:win2k
ootwprohal.dl_
  d:win2k
ootwprohalaacpi.dl_
  d:win2k
ootwprohalacpi.dl_
  d:win2k
ootwprohalapic.dl_
  d:win2k
ootwprohidclass.sy_
  d:win2k
ootwprohidparse.sy_
  d:win2k
ootwprohidusb.sy_
  d:win2k
ootwproi8042prt.sy_
  d:win2k
ootwproini910u.sy_
  d:win2k
ootwprointelide.sy_
  d:win2k
ootwproipsraidn.sy_
  d:win2k
ootwproisapnp.sy_
  d:win2k
ootwprokbdclass.sy_
  d:win2k
ootwprokbdhid.sy_
  d:win2k
ootwprokbdus.dll
  d:win2k
ootwprol_intl.nl_
  d:win2k
ootwprolbrtfdc.sy_
  d:win2k
ootwprolp6nds35.sy_
  d:win2k
ootwpromountmgr.sy_
  d:win2k
ootwpromraid35x.sy_
  d:win2k
ootwpro
crc710.sy_
  d:win2k
ootwpro
tdetect.com
  d:win2k
ootwpro
tfs.sy_
  d:win2k
ootwpro
tkrnlmp.ex_
  d:win2k
ootwproohci1394.sy_
  d:win2k
ootwproopenhci.sy_
  d:win2k
ootwpropartmgr.sy_
  d:win2k
ootwpropci.sy_
  d:win2k
ootwpropciide.sy_
  d:win2k
ootwpropciidex.sy_
  d:win2k
ootwpropcmcia.sy_
  d:win2k
ootwproql1080.sy_
  d:win2k
ootwproql10wnt.sy_
  d:win2k
ootwproql1240.sy_
  d:win2k
ootwproql2100.sy_
  d:win2k
ootwpro
ead1st.txt
  d:win2k
ootwpro
eadme.doc
  d:win2k
ootwprosbp2port.sy_
  d:win2k
ootwproscsiport.sy_
  d:win2k
ootwproserenum.sy_
  d:win2k
ootwproserial.sy_
  d:win2k
ootwprosetup.exe
  d:win2k
ootwprosetupdd.sy_
  d:win2k
ootwprosetupldr.bin
  d:win2k
ootwprosetupreg.hiv
  d:win2k
ootwprosfloppy.sy_
  d:win2k
ootwprosparrow.sy_
  d:win2k
ootwprospcmdcon.sys
  d:win2k
ootwprospddlang.sy_
  d:win2k
ootwprospnotes.htm
  d:win2k
ootwprosym_hi.sy_
  d:win2k
ootwprosymc810.sy_
  d:win2k
ootwprosymc8xx.sy_
  d:win2k
ootwpro ffsport.sy_
  d:win2k
ootwpro xtsetup.sif
  d:win2k
ootwprouhcd.sy_
  d:win2k
ootwproultra66.sy_
  d:win2k
ootwprousbd.sy_
  d:win2k
ootwprousbhub.sy_
  d:win2k
ootwprousbstor.sy_
  d:win2k
ootwprovga.sy_
  d:win2k
ootwprovgaoem.fo_
  d:win2k
ootwprovideoprt.sy_
  d:win2k
ootwprowmilib.sy_
  d:win2k
ootwproootdisk……
  d:win2k
ootwprodiscover……
  d:win2k
ootwproi386……
  d:win2k
ootwprosetuptxt……
  d:win2k
ootwprosupport……
  d:win2k
ootwprosystem32
tdll.dll
  d:win2k
ootwprosystem32smss.exe
  d:win2k
ootwprovalueadd……
  d:win2k
ootwsrv1394bus.sy_
  d:win2k
ootwsrvabp480n5.sy_
  d:win2k
ootwsrvacpi.sy_
  d:win2k
ootwsrvacpiec.sy_
  d:win2k
ootwsrvadpu160m.sy_
  d:win2k
ootwsrvaha154x.sy_
  d:win2k
ootwsrvaic116x.sy_
  d:win2k
ootwsrvaic78u2.sy_
  d:win2k
ootwsrvaic78xx.sy_
  d:win2k
ootwsrvamsint.sy_
  d:win2k
ootwsrvasc.sy_
  d:win2k
ootwsrvasc3350p.sy_
  d:win2k
ootwsrvasc3550.sy_
  d:win2k
ootwsrvatapi.sy_
  d:win2k
ootwsrvautorun.inf
  d:win2k
ootwsrviosinfo.inf
  d:win2k
ootwsrvootfix.bin
  d:win2k
ootwsrvootfont.bin
  d:win2k
ootwsrvootvid.dl_
  d:win2k
ootwsrvuslogic.sy_
  d:win2k
ootwsrvc_936.nl_
  d:win2k
ootwsrvcd20xrnt.sy_
  d:win2k
ootwsrvcdfs.sy_
  d:win2k
ootwsrvcdrom.sy_
  d:win2k
ootwsrvcdrom_is.5
  d:win2k
ootwsrvcdrom_nt.5
  d:win2k
ootwsrvcdromsp3.tst
  d:win2k
ootwsrvclass2.sy_
  d:win2k
ootwsrvclasspnp.sy_
  d:win2k
ootwsrvcpqarray.sy_
  d:win2k
ootwsrvcpqarry2.sy_
  d:win2k
ootwsrvcpqfcalm.sy_
  d:win2k
ootwsrvcpqfws2e.sy_
  d:win2k
ootwsrvdac960nt.sy_
  d:win2k
ootwsrvdisk.sy_
  d:win2k
ootwsrvdisk101
  d:win2k
ootwsrvdisk102
  d:win2k
ootwsrvdisk103
  d:win2k
ootwsrvdisk104
  d:win2k
ootwsrvdmboot.sy_
  d:win2k
ootwsrvdmio.sy_
  d:win2k
ootwsrvdmload.sy_
  d:win2k
ootwsrvfastfat.sy_
  d:win2k
ootwsrvfd16_700.sy_
  d:win2k
ootwsrvfdc.sy_
  d:win2k
ootwsrvfireport.sy_
  d:win2k
ootwsrvflashpnt.sy_
  d:win2k
ootwsrvflpydisk.sy_
  d:win2k
ootwsrvftdisk.sy_
  d:win2k
ootwsrvhal.dl_
  d:win2k
ootwsrvhalaacpi.dl_
  d:win2k
ootwsrvhalacpi.dl_
  d:win2k
ootwsrvhalapic.dl_
  d:win2k
ootwsrvhidclass.sy_
  d:win2k
ootwsrvhidparse.sy_
  d:win2k
ootwsrvhidusb.sy_
  d:win2k
ootwsrvi8042prt.sy_
  d:win2k
ootwsrvini910u.sy_
  d:win2k
ootwsrvintelide.sy_
  d:win2k
ootwsrvipsraidn.sy_
  d:win2k
ootwsrvisapnp.sy_
  d:win2k
ootwsrvkbdclass.sy_
  d:win2k
ootwsrvkbdhid.sy_
  d:win2k
ootwsrvkbdus.dll
  d:win2k
ootwsrvl_intl.nl_
  d:win2k
ootwsrvlbrtfdc.sy_
  d:win2k
ootwsrvlp6nds35.sy_
  d:win2k
ootwsrvmountmgr.sy_
  d:win2k
ootwsrvmraid35x.sy_
  d:win2k
ootwsrv
crc710.sy_
  d:win2k
ootwsrv
tdetect.com
  d:win2k
ootwsrv
tfs.sy_
  d:win2k
ootwsrv
tkrnlmp.ex_
  d:win2k
ootwsrvohci1394.sy_
  d:win2k
ootwsrvopenhci.sy_
  d:win2k
ootwsrvpartmgr.sy_
  d:win2k
ootwsrvpci.sy_
  d:win2k
ootwsrvpciide.sy_
  d:win2k
ootwsrvpciidex.sy_
  d:win2k
ootwsrvpcmcia.sy_
  d:win2k
ootwsrvql1080.sy_
  d:win2k
ootwsrvql10wnt.sy_
  d:win2k
ootwsrvql1240.sy_
  d:win2k
ootwsrvql2100.sy_
  d:win2k
ootwsrv
ead1st.txt
  d:win2k
ootwsrv
eadme.doc
  d:win2k
ootwsrvsbp2port.sy_
  d:win2k
ootwsrvscsiport.sy_
  d:win2k
ootwsrvserenum.sy_
  d:win2k
ootwsrvserial.sy_
  d:win2k
ootwsrvsetup.exe
  d:win2k
ootwsrvsetupdd.sy_
  d:win2k
ootwsrvsetupldr.bin
  d:win2k
ootwsrvsetupreg.hiv
  d:win2k
ootwsrvsfloppy.sy_
  d:win2k
ootwsrvsparrow.sy_
  d:win2k
ootwsrvspcmdcon.sys
  d:win2k
ootwsrvspddlang.sy_
  d:win2k
ootwsrvspnotes.htm
  d:win2k
ootwsrvsym_hi.sy_
  d:win2k
ootwsrvsymc810.sy_
  d:win2k
ootwsrvsymc8xx.sy_
  d:win2k
ootwsrv ffsport.sy_
  d:win2k
ootwsrv xtsetup.sif
  d:win2k
ootwsrvuhcd.sy_
  d:win2k
ootwsrvultra66.sy_
  d:win2k
ootwsrvusbd.sy_
  d:win2k
ootwsrvusbhub.sy_
  d:win2k
ootwsrvusbstor.sy_
  d:win2k
ootwsrvvga.sy_
  d:win2k
ootwsrvvgaoem.fo_
  d:win2k
ootwsrvvideoprt.sy_
  d:win2k
ootwsrvwmilib.sy_
  d:win2k
ootwsrvootdisk……
  d:win2k
ootwsrvclients……
  d:win2k
ootwsrvi386……
  d:win2k
ootwsrvprinters……
  d:win2k
ootwsrvsetuptxt……
  d:win2k
ootwsrvsupport……
  d:win2k
ootwsrvsystem32
tdll.dll
  d:win2k
ootwsrvsystem32smss.exe
  d:win2k
ootwsrvvalueadd……

  10. 制作ISO文件

  CDImage程序加“-o”参数优化后生成的镜像文件约为502 MB,我们假设将它存放在f:盘的根目录下,命令行命令如下:
  d:win2kcdimage -lWin2K-3in1 -t01/10/2000,12:00:00 -g -h -n -o -m -bd:win2kw2kall.bin d:win2k
oot f:w2k-3in1.iso
  上述命令中各参数含义分别为:
  -l:设置光盘卷标。此处为“Win2K-3in1”。
  -t:设置光盘上所有文件的生成日期。此处为“2000年1月10日格林威治时间(GMT)上午12点整”。
  -g:转换本地时间与格林威治时间(GMT)。但如果是在Windows XP系统下,该参数似乎不起作用,“-t”参数指定的是GMT时间,而文件的生成时间是“-t”指定的时间加上时区转换后的本地时间。如,上例中的文件生成本地时间是“20:00:00”,即GMT+8=北京时间。
  -h:包含隐藏的目录和文件。
  -n:允许长文件名。
  -o:优化相同的文件,最重要的参数,这是我们将3个版本的1.24 GB文件压缩到502 MB的关键。
  -m:允许生成的ISO文件超过640 MB。
  -b:光盘启动引导程序,此处我们使用了w2kall.bin。
  d:win2k
oot:源文件路径,将作为光盘的根目录。
  f:w2k-3in1.iso:最后生成的ISO文件,我们要的就是它。
  要点:cdimage /?可显示所有选项。CDImagegui提供了一个图形界面,使用更直观,功能是一样的。

  11. 测试ISO文件

  用VMware加载w2k-3in1.iso文件,设置第1启动设备为光驱。从光盘启动后,系统首先显示信息“Press any key to boot from CD.”,按任意键后,出现[A]、[B]、[C]3个选项菜单,键入A、B或C键然后回车,可启动相应安装版本,此后的安装与原版光盘的安装一致。需要逐个安装,以测试各个版本的完整性。

  12. 增加特殊文件

  可以根据个人的爱好,在光盘上再增加一些特殊文件,例如新版IE、DirectX及一些专用的驱动程序等,只需将其复制到d:win2k
oot目录下,并重新制作ISO文件。

  13.烧录光盘

  ISO镜像文件测试无误后,即可用自己熟悉的烧录软件软件(例如Nero)将其烧录到光盘。 这样,一张可启动的Windows 2000 3合1光盘就制作完成了。当然,最好再用光盘正式地安装一遍,因为VMware测试与光盘测试是不完全一样的。

三、Windows XP 2合1启动光盘的制作

  Windows XP与Windows 2000(当然还包括Windows NT 4.0)同属于Windows NT系列,其启动过程是非常相似的。虽然Bart开发w2kall.bin的初衷是制作3合1的Windows 2000,但既然它能够引导Windows 2000,那么它能否引导Windows XP呢?绝对可以。虽然与制作Windows 2000 3合1的过程类似,但其中有一些明显的不同,而且我们还需要对w2kall.bin进行一些适当的改造,希望朋友们多加注意。下面我介绍Windows XP 2合1启动光盘的制作过程。

  1. 所需工具

  (1)w2kall.bin
  必须。Windows 2000/XP光盘启动引导文件。
  下载地址:http://www.tech-hints.com/files/w2kall.zip
  (2)CDImage.exe(命令行界面)或CDImagegui.exe(图形界面)
  必须。可启动光盘镜像制作工具,生成标准的ISO文件,同时具有优化光盘上文件的功能,使相同的文件只刻录一个,其他的文件都连接到该文件。
  下载地址:http://www.tech-hints.com/prog/cdimage.zip,http://www.tech-hints.com/prog/cdimagegui.zip
  (3)WinZip、WinImg
  可选。解Windows XP安装软盘组的img文件。可替换方法是制作6张安装软盘,然后将6张软盘上的全部文件复制到硬盘。
  下载地址:http://www.winimage.com/winimage/winima60.zip,http://www.winzip.com/getsite.cgi?winzip81.exe
  (4)UltraEdit
  必须。十六进制编辑器,修改启动引导文件中的显示文字,并修改Windows XP不同版本的存放路径。
  下载地址:ftp://ultraedit.com/uedit32.zip
  (5)Windows XP安装软盘组
  必须。用软盘引导机器,加载必要的系统文件及基本驱动程序,然后从光盘继续安装。
  专业版及家庭版的安装软盘是不同的,二者不能混用。XP的安装软盘组必须从微软网站下载:
  简体中文专业版:winxp_cn_pro_bf.exe
  下载地址:http://www.microsoft.com/downloads/release.asp?releaseid=33494   简体中文家庭版:winxp_cn_hom_bf.exe
  下载地址:http://www.microsoft.com/downloads/release.asp?releaseid=33493
  (6)VMware(或Virtual PC)和Nero
  可选。测试制作完成的3合1镜像文件并烧录光盘。

  2. 目录及文件结构

  保证硬盘上有足够空余空间(假设将文件存放在硬盘d:,全部2个版本的原始文件约占用空间为1.02 GB,生成的镜像文件约为558 MB),建立如下目录结构,并复制文件w2kall.bin、cdimage.exe到相应位置:
  d:winxpw2kall.bin
  d:winxpcdimage.exe
  d:winxp
oothome
  d:winxp
ootwpro
  其中,d:winxp
oot是Windows XP 2合1光盘的根目录,d:winxp
oothome用于存放Windows XP家庭版文件,d:winxp
ootwpro用于存放Windows XP专业版文件。
  要点:“home”和“wpro”的目录名称需要固定在w2kall.bin中,只能是4个字符长度。若需要存放在其他目录下,必须用UltraEdit修改w2kall.bin文件,找到“WPROWSRVASRV”,将其替换为其他名称,并相应修改目录结构。此外,还必须在后面的配置中进行相应修改。

  3. 文件复制

  将Windows XP家庭版光盘上的文件全部复制到home目录,将Windows XP专业版光盘上的文件全部复制到wpro目录。
  必须确保复制了全部文件和子目录,包括具有系统和隐藏属性的。
  复制完毕后,清除d:winxp
oot下全部文件和子目录的系统、隐藏和只读属性。
  将d:winxp
oothome目录下的win51和win51ic复制到d:winxp
oot,将d:winxp
ootwpro目录下的win51ip复制到d:winxp
oot。
  要点:d:winxp
oot下面必须有win51、win51ic和win51ip文件,这是我们欺骗安装程序的标志:这张光盘是Windows XP原始安装盘。

  4. 配置安装程序

  将下载到的winxp_cn_pro_bf.exe文件用WinZip释放到硬盘任一目录,得到6个img文件。用WinImg将6个img文件释放到目录d:winxp
ootwpro。
  将下载到的winxp_cn_hom_bf.exe文件用WinZip释放到硬盘任一目录,得到6个img文件。用WinImg将6个img文件释放到目录d:winxp
oothome。
  要点:这是我们模拟软盘安装的关键,一定要连带system32目录(里面有两个文件)一起释放。
  从d:winxp
ootwproi386目录中复制bootfix.bin,将其分别粘贴到d:winxp
oothome和d:winxp
ootwpro。该文件的作用就是光盘启动后显示一条信息“Press any key to boot from CD.”,并等待5秒钟,若没有按键,则从硬盘启动;否则从光盘启动。
  如果觉得5秒的延时太短,可以用Ultraedit编辑该文件,找到“Press any key to boot from CD.”后面的“49 00 12 00”,将“49”改为“AA”延时可达10秒,改为“FF”延时可达15秒。

  5. 修改w2kall.bin

  w2kall.bin是专门针对Windows 2000 3合1启动光盘而开发的,要使它适用于Windows XP 2合1光盘的启动引导,我们必须对其进行一些适当的修改。
  用UltraEdit打开d:win2k
ootw2kall.bin,找到启动菜单:

  [A] Windows 2000 Professional – English
  [B] Windows 2000 Server – English
  [C] Windows 2000 Advanced Server – English

  Choose an option and press [Enter]:

  将其修改为:

  [A] Windows XP Professional
  [B] Windows XP Home
  ==================================

  Choose an option and press [Enter]:

  再查找“WPROWSRVASRV”,将其替换为找到“WPROHOMEHOME”。
  启动菜单接受4个键:A、B、C键和回车键,若用户按了A和B键,将进行相应的安装,若用户按了C键,将安装家庭版,且没有提示。这样的处理比较简单,高手们可以考虑屏蔽C键。
  要点:“WPROHOMEHOME”是光盘安装路径,一定要与目录结构相匹配。最后一个“HOME”对应C键,若用户按了C键后,应使其能够找到相应目录,或在启动菜单中干脆注明“[B/C] Windows XP Home”。

  6. 修改setupldr.bin和txtsetup.si_

  用UltraEdit打开d:winxp
oothomesetupldr.bin,用ASCII方式替换“i386”为“home”,共4处。
  用UltraEdit打开d:winxp
ootwprosetupldr.bin,用ASCII方式替换“i386”为“wpro”,共4处。
  存盘退出。
  将文件d:winxp
oothome xtsetup.si_复制到d:,在d:下运行命令行命令:
  expand txtsetup.si_ txtsetup.sif
  用UltraEdit打开d: xtsetup.sif,替换“SetupSourcePath = ""”为“SetupSourcePath = "home"”;
  存盘退出。
  将txtsetup.sif改名为txtsetup.si_,覆盖掉d:winxp
oothome xtsetup.si_。
  将文件d:winxp
ootwpro xtsetup.si_复制到d:,在d:下运行命令行命令:
  expand txtsetup.si_ txtsetup.sif
  用UltraEdit打开d: xtsetup.sif,替换“SetupSourcePath = ""”为“SetupSourcePath = "wpro"”;
  存盘退出。
  将txtsetup.sif改名为txtsetup.si_,覆盖掉d:winxp
ootwpro xtsetup.si_
  简单办法:将i386中的txtsetup.sif复制到各自的上层目录,删除掉txtsetup.si_,并修改txtsetup.sif,效果一样。
  要点:这两个文件中的路径安装程序告诉安装程序从何处复制文件,必须与目录结构相匹配。

  7. 配置完毕的目录结构及文件列表

  d:winxpcdimage.exe
  d:winxpw2kall.bin
  d:winxp
ootwin51
  d:winxp
ootwin51ic
  d:winxp
ootwin51ip
  d:winxp
oothome1394bus.sy_
  d:winxp
oothome1394vdbg.sy_
  d:winxp
oothomeabp480n5.sy_
  d:winxp
oothomeacpi.sy_
  d:winxp
oothomeacpiec.sy_
  d:winxp
oothomeadpu160m.sy_
  d:winxp
oothomeaha154x.sy_
  d:winxp
oothomeaic78u2.sy_
  d:winxp
oothomeaic78xx.sy_
  d:winxp
oothomealiide.sy_
  d:winxp
oothomeamsint.sy_
  d:winxp
oothomeasc.sy_
  d:winxp
oothomeasc3350p.sy_
  d:winxp
oothomeasc3550.sy_
  d:winxp
oothomeatapi.sy_
  d:winxp
oothomeautorun.inf
  d:winxp
oothomeiosinfo.inf
  d:winxp
oothomeootfix.bin
  d:winxp
oothomeootfont.bin
  d:winxp
oothomeootvid.dl_
  d:winxp
oothomec_936.nl_
  d:winxp
oothomecbidf2k.sy_
  d:winxp
oothomecd20xrnt.sy_
  d:winxp
oothomecdfs.sy_
  d:winxp
oothomecdrom.sy_
  d:winxp
oothomeclasspnp.sy_
  d:winxp
oothomecmdide.sy_
  d:winxp
oothomecpqarray.sy_
  d:winxp
oothomedac2w2k.sy_
  d:winxp
oothomedac960nt.sy_
  d:winxp
oothomedisk.sy_
  d:winxp
oothomedisk101
  d:winxp
oothomedisk102
  d:winxp
oothomedisk103
  d:winxp
oothomedisk104
  d:winxp
oothomedisk105
  d:winxp
oothomedisk106
  d:winxp
oothomedmboot.sy_
  d:winxp
oothomedmio.sy_
  d:winxp
oothomedmload.sy_
  d:winxp
oothomedpti2o.sy_
  d:winxp
oothomedrvmain.sdb
  d:winxp
oothomefastfat.sy_
  d:winxp
oothomefdc.sy_
  d:winxp
oothomeflpydisk.sy_
  d:winxp
oothomeftdisk.sy_
  d:winxp
oothomehal.dl_
  d:winxp
oothomehalaacpi.dl_
  d:winxp
oothomehalacpi.dl_
  d:winxp
oothomehalapic.dl_
  d:winxp
oothomehalmacpi.dl_
  d:winxp
oothomehalmps.dl_
  d:winxp
oothomehalsp.dl_
  d:winxp
oothomehidclass.sy_
  d:winxp
oothomehidparse.sy_
  d:winxp
oothomehidusb.sy_
  d:winxp
oothomehpn.sy_
  d:winxp
oothomehpt3xx.sy_
  d:winxp
oothomei2omgmt.sy_
  d:winxp
oothomei2omp.sy_
  d:winxp
oothomei8042prt.sy_
  d:winxp
oothomeini910u.sy_
  d:winxp
oothomeintelide.sy_
  d:winxp
oothomeisapnp.sy_
  d:winxp
oothomekbda1.dll
  d:winxp
oothomekbda2.dll
  d:winxp
oothomekbda3.dll
  d:winxp
oothomekbdal.dll
  d:winxp
oothomekbdarme.dll
  d:winxp
oothomekbdarmw.dll
  d:winxp
oothomekbdaze.dll
  d:winxp
oothomekbdazel.dll
  d:winxp
oothomekbdbe.dll
  d:winxp
oothomekbdblr.dll
  d:winxp
oothomekbdbr.dll
  d:winxp
oothomekbdbu.dll
  d:winxp
oothomekbdca.dll
  d:winxp
oothomekbdclass.sy_
  d:winxp
oothomekbdcr.dll
  d:winxp
oothomekbdcz.dll
  d:winxp
oothomekbdcz1.dll
  d:winxp
oothomekbdcz2.dll
  d:winxp
oothomekbdda.dll
  d:winxp
oothomekbddiv1.dll
  d:winxp
oothomekbddiv2.dll
  d:winxp
oothomekbddv.dll
  d:winxp
oothomekbdes.dll
  d:winxp
oothomekbdest.dll
  d:winxp
oothomekbdfa.dll
  d:winxp
oothomekbdfc.dll
  d:winxp
oothomekbdfi.dll
  d:winxp
oothomekbdfr.dll
  d:winxp
oothomekbdgae.dll
  d:winxp
oothomekbdgeo.dll
  d:winxp
oothomekbdgkl.dll
  d:winxp
oothomekbdgr.dll
  d:winxp
oothomekbdgr1.dll
  d:winxp
oothomekbdhe.dll
  d:winxp
oothomekbdhe220.dll
  d:winxp
oothomekbdhe319.dll
  d:winxp
oothomekbdheb.dll
  d:winxp
oothomekbdhela2.dll
  d:winxp
oothomekbdhela3.dll
  d:winxp
oothomekbdhept.dll
  d:winxp
oothomekbdhid.sy_
  d:winxp
oothomekbdhu.dll
  d:winxp
oothomekbdhu1.dll
  d:winxp
oothomekbdic.dll
  d:winxp
oothomekbdindev.dll
  d:winxp
oothomekbdinguj.dll
  d:winxp
oothomekbdinhin.dll
  d:winxp
oothomekbdinkan.dll
  d:winxp
oothomekbdinmar.dll
  d:winxp
oothomekbdinpun.dll
  d:winxp
oothomekbdintam.dll
  d:winxp
oothomekbdintel.dll
  d:winxp
oothomekbdir.dll
  d:winxp
oothomekbdit.dll
  d:winxp
oothomekbdit142.dll
  d:winxp
oothomekbdkaz.dll
  d:winxp
oothomekbdkyr.dll
  d:winxp
oothomekbdla.dll
  d:winxp
oothomekbdlt.dll
  d:winxp
oothomekbdlt1.dll
  d:winxp
oothomekbdlv.dll
  d:winxp
oothomekbdlv1.dll
  d:winxp
oothomekbdmon.dll
  d:winxp
oothomekbdne.dll
  d:winxp
oothomekbdnec.dll
  d:winxp
oothomekbdno.dll
  d:winxp
oothomekbdpl.dll
  d:winxp
oothomekbdpl1.dll
  d:winxp
oothomekbdpo.dll
  d:winxp
oothomekbdro.dll
  d:winxp
oothomekbdru.dll
  d:winxp
oothomekbdru1.dll
  d:winxp
oothomekbdsf.dll
  d:winxp
oothomekbdsg.dll
  d:winxp
oothomekbdsl.dll
  d:winxp
oothomekbdsl1.dll
  d:winxp
oothomekbdsp.dll
  d:winxp
oothomekbdsw.dll
  d:winxp
oothomekbdsyr1.dll
  d:winxp
oothomekbdsyr2.dll
  d:winxp
oothomekbdtat.dll
  d:winxp
oothomekbdth0.dll
  d:winxp
oothomekbdth1.dll
  d:winxp
oothomekbdth2.dll
  d:winxp
oothomekbdth3.dll
  d:winxp
oothomekbdtuf.dll
  d:winxp
oothomekbdtuq.dll
  d:winxp
oothomekbduk.dll
  d:winxp
oothomekbdur.dll
  d:winxp
oothomekbdurdu.dll
  d:winxp
oothomekbdus.dll
  d:winxp
oothomekbdusl.dll
  d:winxp
oothomekbdusr.dll
  d:winxp
oothomekbdusx.dll
  d:winxp
oothomekbduzb.dll
  d:winxp
oothomekbdvntc.dll
  d:winxp
oothomekbdycc.dll
  d:winxp
oothomekbdycl.dll
  d:winxp
oothomekd1394.dl_
  d:winxp
oothomekdcom.dl_
  d:winxp
oothomeksecdd.sys
  d:winxp
oothomel_intl.nl_
  d:winxp
oothomelbrtfdc.sy_
  d:winxp
oothomemountmgr.sy_
  d:winxp
oothomemraid35x.sy_
  d:winxp
oothome
tdetect.com
  d:winxp
oothome
tfs.sys
  d:winxp
oothome
tkrnlmp.ex_
  d:winxp
oothomeohci1394.sy_
  d:winxp
oothomeoprghdlr.sy_
  d:winxp
oothomepartmgr.sy_
  d:winxp
oothomepci.sy_
  d:winxp
oothomepciide.sy_
  d:winxp
oothomepciidex.sy_
  d:winxp
oothomepcmcia.sy_
  d:winxp
oothomeperc2.sy_
  d:winxp
oothomeperc2hib.sy_
  d:winxp
oothomeql1080.sy_
  d:winxp
oothomeql10wnt.sy_
  d:winxp
oothomeql12160.sy_
  d:winxp
oothomeql1240.sy_
  d:winxp
oothomeql1280.sy_
  d:winxp
oothome
amdisk.sy_
  d:winxp
oothome
eadme.htm
  d:winxp
oothomesbp2port.sy_
  d:winxp
oothomescsiport.sy_
  d:winxp
oothomeserenum.sy_
  d:winxp
oothomeserial.sy_
  d:winxp
oothomesetup.exe
  d:winxp
oothomesetupdd.sy_
  d:winxp
oothomesetupldr.bin
  d:winxp
oothomesetupreg.hiv
  d:winxp
oothomesfloppy.sy_
  d:winxp
oothomeslip.sy_
  d:winxp
oothomesparrow.sy_
  d:winxp
oothomespcmdcon.sys
  d:winxp
oothomespddlang.sy_
  d:winxp
oothomesq.txt
  d:winxp
oothomestreamip.sy_
  d:winxp
oothomesym_hi.sy_
  d:winxp
oothomesym_u3.sy_
  d:winxp
oothomesymc810.sy_
  d:winxp
oothomesymc8xx.sy_
  d:winxp
oothome ffsport.sy_
  d:winxp
oothome oside.sy_
  d:winxp
oothome xtsetup.si_
  d:winxp
oothomeultra.sy_
  d:winxp
oothomeusbccgp.sy_
  d:winxp
oothomeusbd.sy_
  d:winxp
oothomeusbhub.sy_
  d:winxp
oothomeusbohci.sy_
  d:winxp
oothomeusbport.sy_
  d:winxp
oothomeusbstor.sy_
  d:winxp
oothomeusbuhci.sy_
  d:winxp
oothomevga.sy_
  d:winxp
oothomevgaoem.fo_
  d:winxp
oothomeviaide.sy_
  d:winxp
oothomevideoprt.sy_
  d:winxp
oothomewin51
  d:winxp
oothomewin51ic
  d:winxp
oothomewmilib.sy_
  d:winxp
oothomedocs……
  d:winxp
oothomei386……
  d:winxp
oothomesupport……
  d:winxp
oothomesystem32
tdll.dll
  d:winxp
oothomesystem32smss.exe
  d:winxp
oothomevalueadd……
  d:winxp
ootwpro1394bus.sy_
  d:winxp
ootwpro1394vdbg.sy_
  d:winxp
ootwproabp480n5.sy_
  d:winxp
ootwproacpi.sy_
  d:winxp
ootwproacpiec.sy_
  d:winxp
ootwproadpu160m.sy_
  d:winxp
ootwproaha154x.sy_
  d:winxp
ootwproaic78u2.sy_
  d:winxp
ootwproaic78xx.sy_
  d:winxp
ootwproaliide.sy_
  d:winxp
ootwproamsint.sy_
  d:winxp
ootwproasc.sy_
  d:winxp
ootwproasc3350p.sy_
  d:winxp
ootwproasc3550.sy_
  d:winxp
ootwproatapi.sy_
  d:winxp
ootwproautorun.inf
  d:winxp
ootwproiosinfo.inf
  d:winxp
ootwproootfix.bin
  d:winxp
ootwproootfont.bin
  d:winxp
ootwproootvid.dl_
  d:winxp
ootwproc_936.nl_
  d:winxp
ootwprocbidf2k.sy_
  d:winxp
ootwprocd20xrnt.sy_
  d:winxp
ootwprocdfs.sy_
  d:winxp
ootwprocdrom.sy_
  d:winxp
ootwproclasspnp.sy_
  d:winxp
ootwprocmdide.sy_
  d:winxp
ootwprocpqarray.sy_
  d:winxp
ootwprodac2w2k.sy_
  d:winxp
ootwprodac960nt.sy_
  d:winxp
ootwprodisk.sy_
  d:winxp
ootwprodisk101
  d:winxp
ootwprodisk102
  d:winxp
ootwprodisk103
  d:winxp
ootwprodisk104
  d:winxp
ootwprodisk105
  d:winxp
ootwprodisk106
  d:winxp
ootwprodmboot.sy_
  d:winxp
ootwprodmio.sy_
  d:winxp
ootwprodmload.sy_
  d:winxp
ootwprodpti2o.sy_
  d:winxp
ootwprodrvmain.sdb
  d:winxp
ootwprofastfat.sy_
  d:winxp
ootwprofdc.sy_
  d:winxp
ootwproflpydisk.sy_
  d:winxp
ootwproftdisk.sy_
  d:winxp
ootwprohal.dl_
  d:winxp
ootwprohalaacpi.dl_
  d:winxp
ootwprohalacpi.dl_
  d:winxp
ootwprohalapic.dl_
  d:winxp
ootwprohalmacpi.dl_
  d:winxp
ootwprohalmps.dl_
  d:winxp
ootwprohalsp.dl_
  d:winxp
ootwprohidclass.sy_
  d:winxp
ootwprohidparse.sy_
  d:winxp
ootwprohidusb.sy_
  d:winxp
ootwprohpn.sy_
  d:winxp
ootwprohpt3xx.sy_
  d:winxp
ootwproi2omgmt.sy_
  d:winxp
ootwproi2omp.sy_
  d:winxp
ootwproi8042prt.sy_
  d:winxp
ootwproini910u.sy_
  d:winxp
ootwprointelide.sy_
  d:winxp
ootwproisapnp.sy_
  d:winxp
ootwprokbda1.dll
  d:winxp
ootwprokbda2.dll
  d:winxp
ootwprokbda3.dll
  d:winxp
ootwprokbdal.dll
  d:winxp
ootwprokbdarme.dll
  d:winxp
ootwprokbdarmw.dll
  d:winxp
ootwprokbdaze.dll
  d:winxp
ootwprokbdazel.dll
  d:winxp
ootwprokbdbe.dll
  d:winxp
ootwprokbdblr.dll
  d:winxp
ootwprokbdbr.dll
  d:winxp
ootwprokbdbu.dll
  d:winxp
ootwprokbdca.dll
  d:winxp
ootwprokbdclass.sy_
  d:winxp
ootwprokbdcr.dll
  d:winxp
ootwprokbdcz.dll
  d:winxp
ootwprokbdcz1.dll
  d:winxp
ootwprokbdcz2.dll
  d:winxp
ootwprokbdda.dll
  d:winxp
ootwprokbddiv1.dll
  d:winxp
ootwprokbddiv2.dll
  d:winxp
ootwprokbddv.dll
  d:winxp
ootwprokbdes.dll
  d:winxp
ootwprokbdest.dll
  d:winxp
ootwprokbdfa.dll
  d:winxp
ootwprokbdfc.dll
  d:winxp
ootwprokbdfi.dll
  d:winxp
ootwprokbdfr.dll
  d:winxp
ootwprokbdgae.dll
  d:winxp
ootwprokbdgeo.dll
  d:winxp
ootwprokbdgkl.dll
  d:winxp
ootwprokbdgr.dll
  d:winxp
ootwprokbdgr1.dll
  d:winxp
ootwprokbdhe.dll
  d:winxp
ootwprokbdhe220.dll
  d:winxp
ootwprokbdhe319.dll
  d:winxp
ootwprokbdheb.dll
  d:winxp
ootwprokbdhela2.dll
  d:winxp
ootwprokbdhela3.dll
  d:winxp
ootwprokbdhept.dll
  d:winxp
ootwprokbdhid.sy_
  d:winxp
ootwprokbdhu.dll
  d:winxp
ootwprokbdhu1.dll
  d:winxp
ootwprokbdic.dll
  d:winxp
ootwprokbdindev.dll
  d:winxp
ootwprokbdinguj.dll
  d:winxp
ootwprokbdinhin.dll
  d:winxp
ootwprokbdinkan.dll
  d:winxp
ootwprokbdinmar.dll
  d:winxp
ootwprokbdinpun.dll
  d:winxp
ootwprokbdintam.dll
  d:winxp
ootwprokbdintel.dll
  d:winxp
ootwprokbdir.dll
  d:winxp
ootwprokbdit.dll
  d:winxp
ootwprokbdit142.dll
  d:winxp
ootwprokbdkaz.dll
  d:winxp
ootwprokbdkyr.dll
  d:winxp
ootwprokbdla.dll
  d:winxp
ootwprokbdlt.dll
  d:winxp
ootwprokbdlt1.dll
  d:winxp
ootwprokbdlv.dll
  d:winxp
ootwprokbdlv1.dll
  d:winxp
ootwprokbdmon.dll
  d:winxp
ootwprokbdne.dll
  d:winxp
ootwprokbdnec.dll
  d:winxp
ootwprokbdno.dll
  d:winxp
ootwprokbdpl.dll
  d:winxp
ootwprokbdpl1.dll
  d:winxp
ootwprokbdpo.dll
  d:winxp
ootwprokbdro.dll
  d:winxp
ootwprokbdru.dll
  d:winxp
ootwprokbdru1.dll
  d:winxp
ootwprokbdsf.dll
  d:winxp
ootwprokbdsg.dll
  d:winxp
ootwprokbdsl.dll
  d:winxp
ootwprokbdsl1.dll
  d:winxp
ootwprokbdsp.dll
  d:winxp
ootwprokbdsw.dll
  d:winxp
ootwprokbdsyr1.dll
  d:winxp
ootwprokbdsyr2.dll
  d:winxp
ootwprokbdtat.dll
  d:winxp
ootwprokbdth0.dll
  d:winxp
ootwprokbdth1.dll
  d:winxp
ootwprokbdth2.dll
  d:winxp
ootwprokbdth3.dll
  d:winxp
ootwprokbdtuf.dll
  d:winxp
ootwprokbdtuq.dll
  d:winxp
ootwprokbduk.dll
  d:winxp
ootwprokbdur.dll
  d:winxp
ootwprokbdurdu.dll
  d:winxp
ootwprokbdus.dll
  d:winxp
ootwprokbdusl.dll
  d:winxp
ootwprokbdusr.dll
  d:winxp
ootwprokbdusx.dll
  d:winxp
ootwprokbduzb.dll
  d:winxp
ootwprokbdvntc.dll
  d:winxp
ootwprokbdycc.dll
  d:winxp
ootwprokbdycl.dll
  d:winxp
ootwprokd1394.dl_
  d:winxp
ootwprokdcom.dl_
  d:winxp
ootwproksecdd.sys
  d:winxp
ootwprol_intl.nl_
  d:winxp
ootwprolbrtfdc.sy_
  d:winxp
ootwpromountmgr.sy_
  d:winxp
ootwpromraid35x.sy_
  d:winxp
ootwpro
tdetect.com
  d:winxp
ootwpro
tfs.sys
  d:winxp
ootwpro
tkrnlmp.ex_
  d:winxp
ootwproohci1394.sy_
  d:winxp
ootwprooprghdlr.sy_
  d:winxp
ootwpropartmgr.sy_
  d:winxp
ootwpropci.sy_
  d:winxp
ootwpropciide.sy_
  d:winxp
ootwpropciidex.sy_
  d:winxp
ootwpropcmcia.sy_
  d:winxp
ootwproperc2.sy_
  d:winxp
ootwproperc2hib.sy_
  d:winxp
ootwproql1080.sy_
  d:winxp
ootwproql10wnt.sy_
  d:winxp
ootwproql12160.sy_
  d:winxp
ootwproql1240.sy_
  d:winxp
ootwproql1280.sy_
  d:winxp
ootwpro
amdisk.sy_
  d:winxp
ootwpro
eadme.htm
  d:winxp
ootwprosbp2port.sy_
  d:winxp
ootwproscsiport.sy_
  d:winxp
ootwproserenum.sy_
  d:winxp
ootwproserial.sy_
  d:winxp
ootwprosetup.exe
  d:winxp
ootwprosetupdd.sy_
  d:winxp
ootwprosetupldr.bin
  d:winxp
ootwprosetupreg.hiv
  d:winxp
ootwprosfloppy.sy_
  d:winxp
ootwproslip.sy_
  d:winxp
ootwprosparrow.sy_
  d:winxp
ootwprospcmdcon.sys
  d:winxp
ootwprospddlang.sy_
  d:winxp
ootwprostreamip.sy_
  d:winxp
ootwprosym_hi.sy_
  d:winxp
ootwprosym_u3.sy_
  d:winxp
ootwprosymc810.sy_
  d:winxp
ootwprosymc8xx.sy_
  d:winxp
ootwpro ffsport.sy_
  d:winxp
ootwpro oside.sy_
  d:winxp
ootwpro xtsetup.si_
  d:winxp
ootwproultra.sy_
  d:winxp
ootwprousbccgp.sy_
  d:winxp
ootwprousbd.sy_
  d:winxp
ootwprousbhub.sy_
  d:winxp
ootwprousbohci.sy_
  d:winxp
ootwprousbport.sy_
  d:winxp
ootwprousbstor.sy_
  d:winxp
ootwprousbuhci.sy_
  d:winxp
ootwprovga.sy_
  d:winxp
ootwprovgaoem.fo_
  d:winxp
ootwproviaide.sy_
  d:winxp
ootwprovideoprt.sy_
  d:winxp
ootwprowin51
  d:winxp
ootwprowin51ip
  d:winxp
ootwprowmilib.sy_
  d:winxp
ootwprodocs……
  d:winxp
ootwproi386……
  d:winxp
ootwprosupport……
  d:winxp
ootwprosystem32
tdll.dll
  d:winxp
ootwprosystem32smss.exe
  d:winxp
ootwprovalueadd……

  8. 制作ISO文件

  CDImage程序加“-o”参数优化后生成的镜像文件约为558 MB,我们假设将它存放在f:盘的根目录下,命令如下:
  d:winxpcdimage -lWinXP-2in1 -t09/05/2001,12:00:00 -g -h -j1 -o -m -bd:winxpw2kall.bin d:winxp
oot f:wxp-2in1.iso
  上述命令与生成Windows 2000的命令略有不同,各参数含义分别为:
  -l:设置光盘卷标。此处为“WinXP-2in1”。
  -t:设置光盘上所有文件的生成日期。此处为“2001年9月5日格林威治时间(GMT)上午12点整”。
  -g:转换本地时间与格林威治时间(GMT)。但如果是在Windows XP系统下,该参数似乎不起作用,“-t”参数指定的是GMT时间,而文件的生成时间是“-t”指定的时间加上时区转换后的本地时间。如,上例中的文件生成本地时间是“20:00:00”,即GMT+8=北京时间。
  -h:包含隐藏的目录和文件。
  -j1:编码Joliet文件名,并兼容DOS的8.3格式文件名。
  -o:优化相同的文件,最重要的参数,这是我们将3个版本的1.02 GB文件压缩到558 MB的关键。
  -m:允许生成的ISO文件超过640 MB。
  -b:光盘启动引导程序,此处我们使用了w2kall.bin。
  d:winxp
oot:源文件路径,将作为光盘的根目录。
  f:wxp-2in1.iso:最后生成的ISO文件,我们要的就是它。
  要点:cdimage /?可显示所有选项。CDImagegui提供了一个图形界面,使用更直观,功能是一样的。

  9. 测试ISO文件

  用VMware加载wxp-2in1.iso文件,设置第1启动设备为光驱。从光盘启动后,系统首先显示信息“Press any key to boot from CD.”,按任意键后,出现[A]、[B]2个选项菜单,键入A、B键然后回车,可启动相应安装版本,键入C键然后回车,可安装家庭版。此后的安装与原版光盘的安装一致。需要逐个安装,以测试各个版本的完整性。

  10. 增加特殊文件

  可以根据个人的爱好,在光盘上再增加一些特殊文件,只需将其复制到d:winxp
oot目录下,并重新制作ISO文件。

  11.烧录光盘

  ISO镜像文件测试无误后,即可用自己熟悉的软件(例如Nero)将其烧录到光盘。 这样,一张可启动的Windows XP 2合1光盘就制作完成了。同样,需要测试这张CD,最好的办法就是用它逐个安装一遍。

四、特色点评

  优点:与街面上流行的Windows 2000/XP n合1光盘相比,上述方法制作的光盘目录结构更简洁,没有一个多余的文件,不需要diskem1x引导程序,不需要重新制作启动菜单,不需要为每个版本分别准备不同的引导文件,针对性更强。
  缺点:只针对Windows 2000/XP系列,最多只能包含3个版本,无法制作出漂亮的彩色菜单。

3D Graphics:
3Delight Free – http://www.3delight.com/index.htm
Anim8or – http://www.anim8or.com/
Aqsis – http://www.aqsis.com/
Blender – http://www.blender3d.org/
Houdini (Free Edition) – http://www.sidefx.com/apprentice/index.html
Maya Personal Learning Ed. – http://www.alias.com/eng/products-services…_maya_ple.shtml
Now3D – http://digilander.libero.it/giulios/Eng/homepage.htm
OpenFX – http://www.openfx.org
POV-Ray – http://www.povray.org/
SOFTIMAGE|XSI EXP – http://www.softimage.com/products/exp/v3/
Terragen – http://www.planetside.co.uk/terragen/
Toxic – http://www.toxicengine.org/
Wings 3D – http://www.wings3d.com/

Anti-Virus:
a-squared – http://www.emsisoft.com/en/software/free/
AntiVir – http://www.free-av.com/
Avast – http://www.avast.com/i_idt_1018.html
AVG – http://free.grisoft.com/
BitDefender – http://www.bitdefender.com
ClamWin – http://www.clamwin.com/

Anti Spyware:
Ad-aware – http://www.lavasoft.de/software/adaware/
Bazooka – http://www.kephyr.com/spywarescanner/index.html
CWShredder – http://www.intermute.com/spysubtract/cwshr…r_download.html
Hijackthis – http://www.spywareinfo.com/~merijn/downloads.html
Microsoft AntiSpyware – http://www.microsoft.com/athome/security/s…re/default.mspx
SpyBot Search & Destroy – http://spybot.safer-networking.de/
SpywareBlaster – http://www.javacoolsoftware.com/spywareblaster.html
SpywareGuard – http://www.wilderssecurity.net/spywareguard.html
WinPatrol – http://www.winpatrol.com/

Audio Creation
Gungirl Sequencer – http://ggseq.sourceforge.net/pmwiki.php/Main/HomePage
HammerHead – http://www.threechords.com/hammerhead/introduction.shtml
Jesusonic – http://www.jesusonic.com/soft.php
KRISTAL Audio Engine – http://www.kreatives.org/kristal/index.php
orDrumbox – http://ordrumbox.sourceforge.net/
Tu2 – http://www.brambos.com/news.html

Audio Players:
1by1 – http://www.rz.uni-frankfurt.de/~pesch
Billy – http://www.sheepfriends.com/?page=billy
CoolPlayer – http://coolplayer.sourceforge.net/
DeejaySystem MK1 – http://www.deejaysystem.com/prod_mk1.asp
DeliPlayer. http://www.deliplayer.com/
Foobar 2000 – http://www.foobar2000.org/
iTunes – http://www.apple.com/itunes/
Jet Audio Basic – http://www.jetaudio.com/
Mixere – http://mixere.sourceforge.net/
Mixxx – http://mixxx.sourceforge.net/
monoRAVEik – http://www.mono211.com/monoraveik/mr1200.html
MoreAmp – http://sourceforge.net/projects/moreamp/
Musik – http://musik.berlios.de/
musikCube – http://www.musikcube.com/
QCD Player – http://www.quinnware.com/
Sonique – http://sonique.lycos.com/
Winamp – http://www.winamp.com/
XMPlay – http://www.un4seen.com/xmplay.html
Zinf – http://www.zinf.org/

Audio Tools:
Audacity – http://audacity.sourceforge.net/
AudioShell – http://www.softpointer.com/AudioShell.htm
BeSweet – http://dspguru.doom9.net/
CDex – http://cdexos.sourceforge.net/
dBpowerAMP Music Converter – http://www.dbpoweramp.com/dmc.htm
EAC – http://www.exactaudiocopy.de/
Encounter 2003 – http://www.waschbusch.com/
GermaniXEncoder – http://www.germanixsoft.de/
K-MP3 – http://www.katarncorp.com/
KraMixer – http://www.kramware.com/
MP3 Book Helper – http://mp3bookhelper.sourceforge.net/
MP3 Tag – http://www.mp3tag.de/
Mp3 Tag Tools – http://massid3lib.sourceforge.net/
mp3DirectCut – http://www.rz.uni-frankfurt.de/~pesch/
MP3Gain – http://www.geocities.com/mp3gain/
mp3Trim – http://www.logiccell.com/~mp3trim/
MusicBrainz – http://musicbrainz.org/
Rarewares – http://rarewares.hydrogenaudio.org/
SoundEngine Free – http://www.cycleof5th.com/en/index.htm
TagScanner – http://xdev.narod.ru/tagscan_e.htm
The GodFather – http://users.otenet.gr/~jtcliper/tgf/
TigoTago – http://www.tigotago.com/

CD/DVD Burning:
Burn4Free – http://www.burn4free.com/
Burnatonce – http://www.burnatonce.com/
Burrrn – http://www.burrrn.net/
CDBurnerXP – http://www.cdburnerxp.se/
CDRDAO – http://cdrdao.sourceforge.net/
CDR Tools Frontend – http://demosten.com/cdrfe/
Deepburner – http://www.deepburner.com/
DVD Decrypter: http://www.dvddecrypter.com/
Easy Burning, DropCD & Audio CDhttp://www.paehl.de/cdr
ImgBurn – http://www.imgburn.com/

Compression / Decompression:
7-zip – http://www.7-zip.org/
bzip2 – http://sources.redhat.com/bzip2/index.html
ExtractNow – http://www.extractnow.com/
FilZip – http://www.filzip.com/
Info-Zip – http://www.info-zip.org/
IZArc – http://www.florida.plus.com/izarc/
QuickZip – http://www.quickzip.org/
TUGZip – http://www.tugzip.com/
UPX – http://upx.sourceforge.net/
Zip&Go – http://www.handybits.com/zipngo.htm
Zipgenius – http://www.zipgenius.it/

Defrag Software:
DIRMS & Buzzsaw – http://www.dirms.com/
OpenVMS – http://www.execsoft.com/freeware/freeware.asp

Desktop Enhancements:
AveDesk – http://www.aqua-soft.org/board/showthread.php?t=17372
CursorXP – http://www.stardock.com/products/cursorxp/download.html
Desktop Sidebar – http://www.desktopsidebar.com/
Filehand – http://www.filehand.com/
Glass2k – http://www.chime.tv/products/glass2k.shtml
Kapsules – http://kapsules.shellscape.org/
Konfabulator – http://www.konfabulator.com/info
Lost Goggles – http://www.lostgoggles.com/
MobyDock – http://www.mobydock.com/
Panorama – http://www.ivory.org/panorama.html
Rainlendar – http://www.ipi.fi/~rainy/index.php?pn=proj…ject=rainlendar
RunFast – http://www.idiogensoftware.com/runfast/index.htm
Samurize – http://www.samurize.com/
SlickRun – http://www.bayden.com/SlickRun/
Snippy – http://www.bhelpuri.net/Snippy/
TaskSwitchXP Pro – http://www.ntwind.com/taskswitchxp/
tclock2 – http://home.inreach.com/2tone/tclock2/tclock2.htm
Trip – http://trip.glenmurphy.com/
Weather Watcher – http://www.singerscreations.com/
WinRoll – http://www.palma.com.au/winroll/

Download managers:
Free Download Manager – http://www.freedownloadmanager.org/
Fresh Download – http://www.freshdevices.com/freshdown.html
LeechGet – http://www.leechget.net/en/
Retriever – http://www.halogenware.com/software/retriever.html
Star Downloader – http://www.stardownloader.com/downloads.php
Sun Download Manager – http://www.sun.com/download/sdm/index.xml
wackget – http://millweed.com/projects/wackget/
wget – http://xoomer.virgilio.it/hherold/
WellGet – http://www.wellget.com/

Encryption and data security:
Axcrypt – http://axcrypt.sourceforge.net/
Blowfish Advanced CS- http://web.bsn.ch/lasse/bfacs.htm
Eraser – http://www.heidi.ie/eraser/default.php
File Shredder – http://www.sys-shield.com/fileshredder.htm
KeePass – http://keepass.sourceforge.net/
GnuPG – http://www.gnupg.org/
PGP Freeware – http://www.pgp.com/products/freeware.html
PicoCrypt – http://picofactory.com/picocrypt.html
TrueCrypt – http://www.truecrypt.org/
WindowsCleaner – http://www.winnowsoft.com/internet-eraser.htm

File Managers:
2xExplorer – http://netez.com/2xExplorer/
A43 – http://www.shawneelink.net/~bgmiller/
ExplorerXP – http://www.explorerxp.com
freeCommander – http://www.freecommander.com/index_en.htm
Gyula‘s Navigator – http://www.wanari.com/
JExplorer – http://home.megapass.co.kr/~woosjung/
MeeSoft Commander – http://meesoft.logicnet.dk/

File repair and recovery:
PC Inspector File Recovery – http://www.pcinspector.de/file_recovery/UK/welcome.htm

Firewalls:
Jetico Personal Firewall – http://www.jetico.com/index.htm#/jpfirewall.htm
Kerio (Kerio Personal Firewall is FREE for home and personal use) – http://www.kerio.com/kpf_home.html
NetVida Safetynet – http://www.netveda.com/consumer/safetynet.htm
Outpost Firewall (version 1 is free) – http://www.agnitum.com/download/outpost1.html
SoftPerfect Personal Firewall – http://www.softperfect.com/products/firewall/
Sygate – http://smb.sygate.com/products/spf_standard.htm
Wyvern Firewall 2004 – http://www.wyvernworks.com/firewall.html
Zonealarm Basic firewall –

http://www.zonelabs.com/store/content/comp…reeDownload.jsp

FTP Clients:
CoreFTP – http://www.coreftp.com/
Filezilla – http://sourceforge.net/projects/filezilla
miFiles – http://www.simdata.com.au/mifiles.html
SmartFTP – http://www.smartftp.com/

FTP Servers:
Cerberus – http://www.cerberusftp.com/
FileZilla – http://filezilla.sourceforge.net/
Golden FTP Server – http://www.goldenftpserver.com
GuildFTPD – http://www.totalshareware.com/asp/detail_v…pplication=8334
Quick ‘n Easy FTP Server – http://www.pablovandermeer.nl/ftp_server.html
SlimFTPd – http://www.whitsoftdev.com/slimftpd
TYPSoft FTP Server – http://en.typsoft.com/
WarFTPD – http://www.jgaa.com/

HTML Editors:
1st page 2000 – http://www.evrsoft.com/download.shtml
AceHTML – http://freeware.acehtml.com/download.html
Aracnophilia – http://www.arachnoid.com/arachnophilia/
FoxEditor – http://foxeditor.sourceforge.net/
HTML-Kit – http://www.chami.com/html-kit/
NVU – http://www.nvu.com/index.html
Selida – http://www.amaryllis.8m.com/
Trellian webPAGE – http://webpage.vendercom.com/
TSW WebCoder – http://www.tsware.net/
WYSIWYG Web Builder –

http://www.pablosoftwaresolutions.com/html…eb_builder.html

Image viewers:
Ahaview – http://www.aha-soft.com/ahaview/ahaviewfree.exe
FastStone Image Viewer – http://www.faststone.org/FSViewerDetail.htm
Irfanview – http://www.irfanview.com/
Picasa – http://www.picasa.com/content/download.php
Shell Extension – http://www.firmtools.com/products/shellextension/
SlowView – http://www.slowview.at/
XNView – http://www.xnview.com/

Instant Messengers:
AMSN – http://amsn.sourceforge.net/index.php
Gaim – http://gaim.sourceforge.net/
Google Talk – http://www.google.com/talk/
IM2: http://www.im2.com
Mercury Messenger – http://www.mercury.to/
Miranda IM – http://www.miranda-im.org/
Pandion – http://www.pandion.be/
PSI – http://psi.affinix.com/
qip – http://www.qip.ru/
Skype – http://www.skype.com/
SIM – http://sim-icq.sourceforge.net/
TerraIM – http://terraim.sourceforge.net/
Trillian Basic – http://trillian.cc/downloads

Internet Explorer Front-Ends:
AM Browser – http://www.ambrowser.com/
AOL Browser – http://beta.aol.com/projects/aolbrowser/
Avantbrowser – http://www.avantbrowser.com/
Maxthon – http://www.maxthon.com/
SlimBrowser – http://www.flashpeak.com/sbrowser/sbrowser.htm

IRC Clients:
BersIRC – http://www.bersirc.com/
BitchX – http://bitchx.org/download.php
HydraIRC – http://www.hydrairc.com/
NodeIRC – http://node.sourceforge.net/
TinyIRC – http://www.tinyirc.net/
XChat – http://www.silverex.org/news/

Mail programs:
Foxmail – http://fox.foxmail.com.cn/english/
i.Scribe – http://www.memecode.com/
Mahogany Mail – http://mahogany.sourceforge.net/
Pegasus Mail – http://www.pmail.com/
PopTray – http://www.poptray.org/
Thunderbird – http://www.mozilla.org/projects/thunderbird/

Anti-spam programs:
K9 – http://www.keir.net/k9.html
MailWasher- http://www.mailwasher.net/
POPFile – http://popfile.sourceforge.net/
SpamBayes – http://spambayes.sourceforge.net/
SpamPal – http://www.spampal.org/

Network Tools:
CMDTime NTP Utility – http://www.softshape.com/download/
Ethereal Protocol Analyzer – http://www.ethereal.com/
Gencontrol – http://www.gensortium.com/products/gencontrol.html
hamachi – http://www.hamachi.cc/
NetMeter – http://readerror.gmxhome.de/
NetProfiles – http://netprofiles.danielmilner.com/
NMap – http://www.insecure.org/nmap/
Ntop – http://www.ntop.org
PingPlotter – http://www.pingplotter.com
PuTTY – http://www.chiark.greenend.org.uk/~sgtatham/putty
RAS Graph & Stats – http://forum.flashfxp.com/showthread.php?s=&threadid=2400
RealVNC – http://www.realvnc.com/
TightVNC – http://www.tightvnc.org/
Ultr@VNC – http://ultravnc.sourceforge.net/
WinSCP – http://www.winscp.com/

Office Suite:
602PC Suite free edition – http://www.software602.com/products/pcs/download.html
AbiWord – http://www.abiword.com/
OpenOffice.org – http://www.openoffice.org/
qjot – http://www.xtort.net/xtort/qjot.php
TreeDBNotes – http://www.softviewer.com/treedbnotes/free_index.htm

Partition Managers:
Partition Resizer – http://zeleps.com/
Ranish Partition Manager – http://www.ranish.com/part/
SwissKnife – http://www.compuapps.com/Download/swissknife/swissknife.htm
TestDisk – http://www.cgsecurity.org/index.html?testdisk.html

PDF Utilities:
CutePDF – http://www.cutepdf.com/Products/CutePDF/writer.asp
Foxit PDF Reader – http://www.foxitsoftware.com/pdf/rd_intro.php
Free PDF – http://www.webxd.com/zipguy/frpdfdl.htm
Ghostscript/GSView – http://www.ghostscript.com/
PDF 995 – http://www.pdf995.com/
PDFCreator – http://sourceforge.net/projects/pdfcreator/
PrimoPDF – http://www.primopdf.com/

Photo manipulation and image design:
ArtRage – http://www.ambientdesign.com/artrage.html
Artweaver – http://www.artweaver.de/index.php?en_version
ColorPic – http://www.iconico.com/colorpic/
Deep Paint – http://www.download.com/Deep-Paint/3000-21…tml?tag=lst-2-7
Delineate – http://delineate.sourceforge.net/
iIco – http://www.mintrasystems.com/world/product…duct.php?p=iico
Inkscapehttp://www.inkscape.org/
JPEGCrops – http://ekot.dk/programmer/JPEGCrops/
Paint .NET – http://www.eecs.wsu.edu/paint.net/
Pixia – http://www.ab.wakwak.com/~knight/
Pixie – http://www.nattyware.com/pixie.html
PhotoFiltre – http://www.photofiltre.com/
Sodipodi – http://www.sodipodi.com/
The Gimp – http://www.gimp.org/
Tuxpaint – http://www.newbreedsoftware.com/tuxpaint
Wax – http://www.debugmode.com/wax/
Wink – http://www.debugmode.com/wink/
WinMorph – http://www.debugmode.com/winmorph/

Programming:
ActivePerl – http://www.activestate.com/Products/ActivePerl
BlueJ – http://www.bluej.org/download/download.html
Crimson Editor – http://www.crimsoneditor.com/
Code::Blocks – http://www.codeblocks.org/
Context – http://www.context.cx/
Dev C++ – http://www.bloodshed.net/
Dev Pascal – http://www.bloodshed.net/
Digital Mars C++ – http://www.digitalmars.com/download/freecompiler.html
Eclipse – http://www.eclipse.org/
ExamDiff – http://www.prestosoft.com/ps.asp?page=edp_examdiff
Freepascal – http://www.freepascal.org/
JCreator LE – http://www.jcreator.com/download.htm
jEdit – http://www.jedit.org/
Metapad – http://www.liquidninja.com/metapad/
Notepad++ – http://notepad-plus.sourceforge.net/uk/site.htm
Notepad2 – http://www.flos-freeware.ch/
Open Watcom – http://www.openwatcom.org/
Pelles C – http://www.smorgasbordet.com/pellesc/index.htm
PHP Hypertext Parser – http://www.php.net/
Programmer‘s Notepad – http://www.pnotepad.org/
PSPad – http://www.pspad.com/
Python – http://www.python.org/
Ruby – http://www.dm4lab.to/~usa/ruby/index_en.html
SharpDevelop – http://www.icsharpcode.net/opensource/sd/
WebMatrix – http://www.asp.net/webmatrix/
WinMerge – http://winmerge.org/

Pop-up Blockers:
Google Toolbar – http://www.google.com/
NoAds – http://www.southbaypc.com/NoAds/
PopUp Stopper – http://www.panicware.com/product_psfree.html
Privoxy – http://www.privoxy.org/
Proxomitron – http://www.proxomitron.info/

RSS Readers:
Ablion – http://www.fileheaven.com/Abilon/download/14059.htm
BlogExpress – http://www.usablelabs.com/productBlogExpress.html
Feedreader – http://www.feedreader.com/
FireANT – http://www.antisnottv.net/
GreatNews – http://www.curiostudio.com/
RssBandit – http://www.rssbandit.org/
RSSOwl – http://www.rssowl.org/
RssReader – http://www.rssreader.com/
RSS Xpress – http://rssxpress.free.fr/en/?page=&idNews=
SharpReader – http://www.sharpreader.net/

System Information and monitoring:
AIDA32 – http://www.sofotex.com/AIDA32-download_L9326.html
ATITool – http://www.techpowerup.com/atitool/
ATI Tray Tools – http://www.guru3d.com/article/atitraytools/189/
CPU-Z – http://www.cpuid.com/cpuz.php
Everest – http://www.lavalys.com/products/overview.p…ang=en&pageid=1
Gkrellm – http://bill.nalens.com/
K1 – http://clanpkm.free.fr/K1/?lng=en
Motherboard monitor – http://www.majorgeeks.com/download.php?det=311
SpeedFan – http://www.almico.com/speedfan.php
Sysmetrix – http://www.xymantix.com
WCPUID – http://hp.vector.co.jp/authors/VA002374/src/download.html
WhatsRunning – http://www.whatsrunning.net/whatsrunning/main.aspx

Video codecs:
DivX Codec – http://www.divx.com/divx/?src=toptab_divx_from_/index.php
FFDSHOW – http://sourceforge.net/projects/ffdshow
XviD – http://www.xvid.org/

Video players :
AC3Filter – http://sourceforge.net/projects/ac3filter
BsPlayer – http://www.bsplayer.org/
Crystal Player – http://www.crystalplayer.com/index.php?page=downloads
Cygwin MPlayer – http://armory.nicewarrior.org/projects/cygmp/
DivX Player – http://www.divx.com/
MaximusDVD – http://www.maximusdvd.com/
Media Player Classic – http://sourceforge.net/project/showfiles.php?group_id=82303
VideoLan – http://www.videolan.org/

Video tools:
DScaler – http://deinterlace.sourceforge.net/
FlasKMPEG – http://www.flaskmpeg.net
GSpot – http://www.headbands.com/gspot/
TMPGEnc – http://www.tmpgenc.net/e_main.html
VCDEasy – http://www.aplusfreeware.com/categories/Au…eo/VCDEasy.html
VirtualDub – http://www.virtualdub.org/
VirtualDubMod – http://sourceforge.net/project/showfiles.php?group_id=65889
Zwei-Stein Video Editor – http://www.thugsatbay.com/software/index.html

Web browsers:
Firefox – http://www.getfirefox.com
K-Meleon – http://kmeleon.sourceforge.net/
Mozilla – http://www.mozilla.org/
Netscape – http://channels.netscape.com/ns/browsers/default.jsp
Opera – http://www.opera.com

Web servers:
Abyss – http://abyss.sourceforge.net/
Apache – http://httpd.apache.org/
Apache2Triad – http://apache2triad.net/
HTTP File Server – http://www.rejetto.com/sw/
Sambar – http://www.sambar.com/
Savant – http://savant.sourceforge.net/
SimpleServer:WWW – http://www.analogx.com/contents/download/network/sswww.htm
Smart Cache – http://scache.sourceforge.net/
TinyWeb – http://www.ritlabs.com/tinyweb/index.html
Xitami – http://www.xitami.com/

Webcam Software:
booruWebCam – http://www.booru.net/
Dorgem – http://dorgem.sourceforge.net/
grabMotion – http://www.grabmotion.com/
Pryme – http://www.hilo.dk/pryme/

Checksum Utilities:
fsum – http://www.slavasoft.com/fsum/
HashCalc – http://www.slavasoft.com/hashcalc/
hksfv – http://www.big-o-software.com/products/hksfv/
ICEECC – http://www.ice-graphics.com/ICEECC/IndexE.html
md5sum – http://www.etree.org/md5com.html
md5summer – http://www.md5summer.org/
MooSFV – http://www.ubercow.com/moosfv/
QuickPar – http://www.quickpar.org.uk/
QuickSFV – http://www.geocities.com/SiliconValley/Mouse/4668/

General Utilities And Other Applications:
AdShield – http://www.lossepladsen.dk/all4you/TheLostWorld/AdShield.php
AnalogX – http://www.analogx.com/
AppRocket – http://www.candylabs.com/approcket/
AutoIt – http://www.hiddensoft.com/autoit3/
BISS – http://www.bluetack.co.uk/index.php
Celestia – http://www.shatters.net/celestia
CCleaner – http://www.ccleaner.com
ClipX – http://bluemars.org/clipx/
Contact – http://www.isaacboy.com/contact.htm
Cygwin – http://www.cygwin.com
Dir2HTML – http://www.pc-tools.net/win32/dir2html/
Dirkey – http://www.protonfx.com/dirkey/
EasyCleaner – http://personal.inet.fi/business/toniarts/ecleane.htm
EditPad Lite – http://www.editpadpro.com/editpadlite.html
EssentialPIM – http://www.essentialpim.com/
Excessive-software – http://www.excessive-software.eu.tt/
File Transfer Expert – http://www.digital-digest.com/dvd/download…re_fte_105.html
Folder Size Extension – http://foldersize.sourceforge.net/
Hamsin Clipboard – http://www.iisr-cnc.com/hamsin/
HTTrack – http://www.httrack.com/
Inno Setup – http://www.jrsoftware.org/isinfo.php
KeyNote – http://www.tranglos.com/free/keynote.html
Language Identifier – http://www.languageidentifier.com/
Link Checker – http://www.relsoftware.com/rlc/
Memtest-86 – http://www.memtest86.com
Money Manager – http://www.thezeal.com/software/manager/default.asp
Multi Install – http://multiinstall.sourceforge.net/
MWSnap – http://www.mirekw.com/winfreeware/mwsnap.html
NetTime – http://nettime.sourceforge.net
Nullsoft Installer – http://www.nullsoft.com/free/nsis
Open Subfolder – http://www.bubblepop.com/opensubfolder/index.html
Peerguardian – http://www.methlabs.org/
Process Explorer (aka ProcessXP) –

http://www.sysinternals.com/ntw2k/freeware/procexp.shtml
png2ico – http://winterdrache.de/freeware/png2ico
RegSeeker – http://www.hoverdesk.net/freeware.htm
Restoration – http://www3.telus.net/mikebike/RESTORATION.html
Startup Control Panel – http://www.mlin.net/StartupCPL.shtml
Stickies – http://finiteloop.org/~btaylor/software/stickies/
StrokeIt – http://www.tcbmi.com/strokeit/
Syncback – http://www.2brightsparks.com/freeware/freeware-hub.html
Sysinternals – http://www.sysinternals.com/
Toolbox – http://www.sil.org/computing/toolbox/
TreeSize – http://www.jam-software.com/freeware/index.shtml
TuneXP – http://www.driverheaven.net/dforce/showdoc.php?doc=txp_about
Turbo Pad – http://turbopad.sourceforge.net/
Unlocker – http://ccollomb.free.fr/unlocker/
URLSnooper – http://www.donationcoder.com/Software/Mous…oper/index.html
Vim – http://vim.sourceforge.net
WeathAlert – http://www.ic.sunysb.edu/stu/msowul/?page=weathermain
WordWeb – http://wordweb.info/free/
XP AntiSpy – http://www.xpantispy.org/
YourDir – http://www.primeoption.com.au/FreewareYourDir.htm

原文地址:http://www.neowin.net/forum/index.php?showtopic=320017 (里面还有很多其他人跟贴的软件,更全!)

软件测试的常识

软件开发和使用的历史已经留给了我们很多由于软件缺陷而导致的巨大财力、物力损失的经验教训。这些经验教训迫使我们这些测试工程师们必须采取强有力的检测措施来检测未发现的隐藏的软件缺陷。

生产软件的最终目的是为了满足客户需求,我们以客户需求作为评判软件质量的标准,认为软件缺陷( Software Bug )的具体含义包括下面几个因素:

• 软件未达到客户需求的功能和性能;

• 软件超出客户需求的范围;

• 软件出现客户需求不能容忍的错误;

• 软件的使用未能符合客户的习惯和工作环境。

考虑到设计等方面的因素,我们还可以认为软件缺陷还可以包括软件设计不符合规范,未能在特定的条件(资金、范围等)达到最佳等。可惜的是,我们中的很多人更倾向于把软件缺陷看成运行时出现问题上来,认为软件测试仅限于程序提交之后。

在目前的国内环境下,我们几乎看不到完整准确的客户需求说明书,加以客户的需求时时在变,追求完美的测试变得不太可能。因此作为一个优异的测试人员,追求软件质量的完美固然是我们的宗旨,但是明确软件测试现实与理想的差距,在软件测试中学会取舍和让步,对软件测试是有百益而无一弊的。

下面是一些软件测试的常识,对这些常识的理解和运用将有助于我们在进行软件测试时能够更好的把握软件测试的尺度。

• 测试是不完全的(测试不完全)

很显然,由于软件需求的不完整性、软件逻辑路径的组合性、输入数据的大量性及结果多样性等因素,哪怕是一个极其简单的程序,要想穷尽所有逻辑路径,所有输入数据和验证所有结果是非常困难的一件事情。我们举一个简单的例子,比如说求两个整数的最大公约数。其输入信息为两个正整数。但是如果我们将整个正整数域的数字进行一番测试的话,从其数目的无限性我们便可证明是这样的测试在实际生活中是行不通的,即便某一天我们能够穷尽该程序,只怕我们乃至我们的子孙都早已作古了。为此作为软件测试,我们一般采用等价类和边界值分析等措施来进行实际的软件测试,寻找最小用例集合成为我们精简测试复杂性的一条必经之道。

• 测试具有免疫性(软件缺陷免疫性)

软件缺陷与病毒一样具有可怕的 “ 免疫性 ” ,测试人员对其采用的测试越多,其免疫能力就越强,寻找更多软件缺陷就更加困难。由数学上的概率论我们可以推出这一结论。假设一个 50000 行的程序中有 500 个软件缺陷并且这些软件错误分布时均匀的,则每 100 行可以找到一个软件缺陷。我们假设测试人员用某种方法花在查找软件缺陷的精力为 X 小时 /100 行。照此推算,软件存在 500 个缺陷时,我们查找一个软件缺陷需要 X 小时,当软件只存在 5 个错误时,我们每查找一个软件缺陷需要 100X 小时。实践证明,实际的测试过程比上面的假设更为苛刻,为此我们必须更换不同的测试方式和测试数据。该例子还说明了在软件测试中采用单一的方法不能高效和完全的针对所有软件缺陷,因此软件测试应该尽可能的多采用多种途径进行测试。

• 测试是 “ 泛型概念 ” (全程测试)

我一直反对软件测试仅存在于程序完成之后。如果单纯的只将程序设计阶段后的阶段称之为软件测试的话,需求阶段和设计阶段的缺陷产生的放大效应会加大。这非常不利于保证软件质量。需求缺陷、设计缺陷也是软件缺陷,记住 “ 软件缺陷具有生育能力 ” 。软件测试应该跨越整个软件开发流程。需求验证(自检)和设计验证(自检)也可以算作软件测试(建议称为:需求测试和设计测试)的一种。软件测试应该是一个泛型概念,涵盖整个软件生命周期,这样才能确保周期的每个阶段禁得起考验。同时测试本身也需要有第三者进行评估(信息系统审计和软件工程监理),即测试本身也应当被测试,从而确保测试自身的可靠性和高效性。否则自身不正,难以服人。

另外还需指出的是软件测试是提高软件产品质量的必要条件而非充分条件,软件测试是提高产品质量最直接、最快捷的手段,但决不是一个根本手段。

• 80-20 原则

80% 的软件缺陷常常生存在软件 20% 的空间里。这个原则告诉我们,如果你想使软件测试有效地话,记住常常光临其高危多发 “ 地段 ” 。在那里发现软件缺陷的可能性会大的多。这一原则对于软件测试人员提高测试效率及缺陷发现率有着重大的意义。聪明的测试人员会根据这个原则很快找出较多的缺陷而愚蠢的测试人员却仍在漫无目的地到处搜寻。

80-20 原则的另外一种情况是,我们在系统分析、系统设计、系统实现阶段的复审,测试工作中能够发现和避免 80% 的软件缺陷,此后的系统测试能够帮助我们找出剩余缺陷中的 80% ,最后的 5% 的软件缺陷可能只有在系统交付使用后用户经过大范围、长时间使用后才会曝露出来。因为软件测试只能够保证尽可能多地发现软件缺陷,却无法保证能够发现所有的软件缺陷。

80-20 原则还能反映到软件测试的自动化方面上来,实践证明 80% 的软件缺陷可以借助人工测试而发现, 20% 的软件缺陷可以借助自动化测试能够得以发现。由于这二者间具有交叉的部分,因此尚有 5% 左右的软件缺陷需要通过其他方式进行发现和修正。

• 为效益而测试

为什么我们要实施软件测试,是为了提高项目的质量效益最终以提高项目的总体效益。为此我们不难得出我们在实施软件测试应该掌握的度。软件测试应该在软件测试成本和软件质量效益两者间找到一个平衡点。这个平衡点就是我们在实施软件测试时应该遵守的度。单方面的追求都必然损害软件测试存在的价值和意义。一般说来,在软件测试中我们应该尽量地保持软件测试简单性,切勿将软件测试过度复杂化,拿物理学家爱因斯坦的话说就是: Keep it simple but not too simple 。

• 缺陷的必然性

软件测试中,由于错误的关联性,并不是所有的软件缺陷都能够得以修复。某些软件缺陷虽然能够得以修复但在修复的过程中我们会难免引入新的软件缺陷。很多软件缺陷之间是相互矛盾的,一个矛盾的消失必然会引发另外一个矛盾的产生。比如我们在解决通用性的缺陷后往往会带来执行效率上的缺陷。更何况在缺陷的修复过程中,我们常常还会受时间、成本等方面的限制因此无法有效、完整地修复所有的软件缺陷。因此评估软件缺陷的重要度、影响范围,选择一个折中的方案或是从非软件的因素(比如提升硬件性能)考虑软件缺陷成为我们在面对软件缺陷时一个必须直面的事实。

• 软件测试必须有预期结果

没有预期结果的测试是不可理喻的。软件缺陷是经过对比而得出来的。这正如没有标准无法进行度量一样。如果我们事先不知道或是无法肯定预期的结果,我们必然无法了解测试正确性。这很容易然人感觉如盲人摸象一般,不少测试人员常常凭借自身的感觉去评判软件缺陷的发生,其结果往往是把似是而非的东西作为正确的结果来判断,因此常常出现误测的现象。

• 软件测试的意义 – 事后分析

软件测试的目的单单是发现缺陷这么简单吗?如果是 “ 是 ” 的话,我敢保证,类似的软件缺陷在下一次新项目的软件测试中还会发生。古语说得好, “ 不知道历史的人必然会重蹈覆辙 ” 。没有对软件测试结果进行认真的分析,我们就无法了解缺陷发生的原因和应对措施,结果是我们不得不耗费的大量的人力和物力来再次查找软件缺陷。很可惜,目前大多测试团队都没有意识到这一点,测试报告中缺乏测试结果分析这一环节。

结论:

软件测试是一个需要 “ 自觉 ” 的过程,作为一个测试人员,遇事沉着,把持尺度,从根本上应对软件测试有着正确的认识,希望本文对读者对软件测试的认识有所帮助。

Product Name

Product Keys

Microsoft® Office Professional Plus 2007

MTP6Q-D868F-448FG-B6MG7-3DBKT
GQKGR-H8KQH-2DBCM-3K8QR-28VVM
DBXYD-TF477-46YM4-W74MH-6YDQ8

Microsoft® Office Visio® Professional 2007

QB6MH-Q82HX-BFWPK-8TXTY-HHJT6

Microsoft® Office Outlook® 2007 with Business Contact Manager

Not Applicable

Microsoft® Office Project Server 2007

BWPMX-XY8XF-KGBQ6-XKT8R-GHXD3

Microsoft® Office Project Professional 2007

GP24P-FC3DP-HXY7Q-YG3JR-J4G3G

Microsoft® Office Groove® 2007

R83W8-GJQ82-GJ378-XQW9W-JBYKT

Microsoft® Office Groove® Server 2007

PGT8R-VBMBC-6V7GY-TW3HT-8FP36

Microsoft® Office Language Pack 2007 – German

DY7FP-TGTKC-2366R-8VJMB-DGYKT

Microsoft® Office OneNote® 2007

TFKGD-9VXBG-T22DK-FQB9P-MBPG6

Microsoft® Office SharePoint® Designer 2007

VQCR8-6KP8Q-Y2FTW-3YQD7-R22G6

Microsoft® Office SharePoint® Server 2007 – Enterprise

FDJDK-66WCT-2HD9C-4TY63-38C4G

Microsoft® Office SharePoint® Server 2007 – Enterprise(x64)

FDJDK-66WCT-2HD9C-4TY63-38C4G

Microsoft® Office Forms Server 2007

FDJDK-66WCT-2HD9C-4TY63-38C4G

Microsoft® Office Forms Server 2007 (x64)

FDJDK-66WCT-2HD9C-4TY63-38C4G

SYS-CON 媒体(www.sys-con.com)在近日揭晓了一年一度的" 读者选择奖" .这个奖项有“软件工业奥斯卡”之称.今年是第10届,有超过1.7万的SYS-CON读者参与了投票,分别评选出了在SOA、Web Services, Java 和 XML技术等领域的最佳产品、工具以及最佳提名。

1) 最佳 Java 应用服务器

获胜者:BEA WebLogic Server (BEA Systems)

提名:
1) JBoss Application Server (JBoss)
2) Sun Java Application Server (Sun Microsystems)
3) IBM WebSphere Application Server (IBM)

2) 最佳 Java 应用程序

获胜者: Eclipse (Eclipse Foundation)

提名:
1) IntelliJ IDEA (JetBrains)
2) BEA WebLogic Server (BEA Systems)
3) IBM WebSphere Application Server (IBM)

3) 最佳企业级数据库

获胜者: Oracle Database 10g (Oracle)

提名:
1) IBM DB2 Universal Database (IBM)
2) HSQLDB (HSQLDB Development Team)
3) Sybase Adaptive Server Enterprise (Sybase)

4) 最佳 Java IDE

获胜者: IntelliJ IDEA (JetBrains)

提名:
1) Eclipse (Eclipse Foundation)
2) NetBeans Java Studio Enterprise (Sun Microsystems)
3) IBM Rational Application Developer (IBM)

5) 最佳 Java 安装

获胜者:InstallAnywhere (Macrovision)

提名:
1) InstallShield (Macrovision)
2) Install4j (ej-technologies)
3) Advanced Installer for Java (Caphyon)

6) 最佳Java 应用程序监控工具

获胜者: IBM Tivoli (IBM)

提名:
1) APM Suite for Java 2 Platform (Quest)
2) Borland Deployment Op-Center (Borland)
3) Veritas Java 2 Adaptive Instrumentation (Veritas/Symantec)

7) 最佳 Java? BI 工具

获胜者:SAP Business Intelligence Development Kit (SAP)

提名:
1) Crystal Enterprise (Business Objects)
2) Oracle Business Intelligence Beans (Oracle)
3) JReport (Jinfonet Software)

8) 最佳移动数据库

获胜者: IBM DB2 Everyplace (IBM)

提名:
1) PointBase Micro (DataMirror)
2) SQL Anywhere Studio (Sybase)
3) Berkeley DB Java Edition (Sleepycat Software)

9) 最佳Java 报表工具

获胜者: Style Report (InetSoft)

提名:
1) Crystal Reports (Business Objects)
2) JReport (Jinfonet Software)
3) JasperAssistant (JasperAssistant Software)

10)最佳Rich Client平台

获胜者: Eclipse Rich Client Platform (Eclipse Foundation)

提名:
1) Ultra Light Client for Java 2 (Canoo)
2) Nexaweb Platform (Nexaweb Technologies)
3) Laszlo Presentation Server (Laszlo Systems)

11) 最佳Java 组件

获胜者: Oracle ADF Business Components (Oracle)

提名:
1) IMS DL/I Model Utility (IBM)
2) Chart FX for Java (Software FX)
3) JClass (Quest Software)

12) 最佳Java 数据库访问工具

获胜者: IBM Rational Application Developer (IBM)

提名:
1) Oracle Application Server TopLink 10g (Oracle)
2) DBVisualizer (Minq Sofware)
3) Kodo JDO (SolarMetric/BEA Systems)

13) 最佳 Java 消息发送工具

获胜者: IBM WebSphere MQ (IBM)

提名:
1) Sun Java System Message Queue (Sun Microsystems)
2) TIBCO Enterprise Message Service (TIBCO)
3) JORAM (ScalAgent Distributed Technologies)

14) 最佳Java Profiling / Testing工具

获胜者:JProfiler (ej-technologies)

提名:
1) IBM Rational Application Developer for WebSphere (IBM)
2) Optimizeit Enterprise Suit (Borland)
3) Oracle JDeveloper (Oracle)

15) 最佳Java 培训

获胜者: Java BluePrints (Sun Microsystems)

提名:
1) developerWorks Java Tutorials (IBM)
2) dev2dev (BEA Systems)
3) Essential Java (DevelopMentor)

16)最佳Java 虚拟机

获胜者: Java SE (Sun Microsystems)

提名:
1) BEA WebLogic JRockit (BEA Systems)
2) IBM Java SDK (IBM)
3) Kaffe (Kaffe.org)

17)最佳Java 团队开发工具

获胜者: Eclipse IDE (Eclipse Foundation)

提名:
1) IBM WebSphere Studio with Rational ClearCase (IBM)
2) Oracle JDeveloper (Oracle)
3) BEA WebLogic Workshop (BEA Systems)

18) 最佳Java 创新工具

获胜者: Eclipse IDE (Eclipse Foundation)

提名:
1) Java Studio Creator (Sun Microsystems)
2) IntelliJ IDEA (JetBrains)
3) BEA WebLogic Workshop (BEA Systems)

19) 最佳 Java SOA Kit

获胜者:BEA WebLogic Workshop (BEA Systems)

提名:
1) Java Web Services Developer Pack (Sun Microsystems)
2) IBM Emerging Technologies Toolkit (IBM)
3) Oracle JDeveloper (Oracle)

20) 最佳 Java 无线应用

获胜者: IBM WebSphere MQ Everyplace (IBM)

提名:
1) RIM Blackberry Wireless Handheld (Research in Motion)
2) Ericsson Wireless Office (Ericsson)
3) ValueFirst Velocity Plus (ValueFirst)

21) 最佳 Java 类库

获胜者: SWT (Eclipse Foundation)

提名:
1) Asynchronous IO Java Package (IBM)
2) Quest JClass (Quest)
3) Unified IO for Java (Andrey Kuznetsov)

22) 最佳 数据库工具或者驱动程序

获胜者:MagicDraw UML (No Magic)

提名:
1) Oracle JDeveloper (Oracle)
2) IBM Rational Rose Data Modeler (IBM)
3) AllFusion ERwin Data Modeler (CA)

23) 最佳 Java 持久层架构

获胜者:Oracle Application Server TopLink 10g (Oracle)

提名:
1) WebObjects (Apple)
2) iBatis SQL Map (Open Source: iBatis)
3) Kodo JDO (SolarMetric)

24) 最佳 Java 调试工具

获胜者: Eclipse (Eclipse Foundation)

提名:
1) NetBeans (Sun Microsystems)
2) Enerjy Code Analyzer (Enerjy Software)
3) IBM Rational (IBM)

25) 最佳 Java 应用开发框架

获胜者: Sun Java Studio Enterprise (Sun Microsystems)

提名:
1) IBM Rational (IBM)
2) IntelliJ IDEA (JetBrains)
3) BEA WebLogic Workshop (BEA Systems)

26) 最佳 Java 书

获胜者:Hibernate in Action (Manning Publications)

提名:
1) J2EE BluePrints (Sun Microsystems)
2) Core Java 2 (Sun Microsystems)
3) Java Developer’s Guide to Eclipse (IBM)

  近期,一些朋友总提出内存不能为“read”或者“written”的问题,鉴于产生这些问题的原因多样复杂,判断和处理这些问题比较麻烦,现在将网上找到的这篇较为全面的资料,加上自己收集到的部分例子奉上,供大家共享。

  问题

  运行某些程序的时候,有时会出现内存错误的提示,然后该程序就关闭。

  “0x????????”指令引用的“0x????????”内存。该内存不能为“read”。

  “0x????????”指令引用的“0x????????”内存,该内存不能为“written”。

  一般出现这个现象有方面的,一是硬件,即内存方面有问题,二是软件,这就有多方面的问题了。

  故障分析

  硬件方面:

  一般来说,内存出现问题的可能性并不大,主要方面是:内存条坏了、内存质量有问题,还有就是2个不同牌子不同容量的内存混插,也比较容易出现不兼容的情况,同时还要注意散热问题,特别是超频后。你可以使用MemTest 这个软件来检测一下内存,它可以彻底的检测出内存的稳定度。

  假如是双内存,而且是不同品牌的内存条混插或者买了二手内存时,出现这个问题,这时,就要检查是不是内存出问题了或者和其它硬件不兼容。

  软件方面:

  先简单说说原理:内存有个存放数据的地方叫缓冲区,当程序把数据放在其一位置时,因为没有足够空间,就会发生溢出现象。举个例子:一个桶子只能将一斤的水,当放入两斤的水进入时,就会溢出来。而系统则是在屏幕上表现出来。这个问题,经常出现在windows2000和XP系统上,Windows 2000/XP对硬件的要求是很苛刻的,一旦遇到资源死锁、溢出或者类似Windows 98里的非法操作,系统为保持稳定,就会出现上述情况。另外也可能是硬件设备之间的兼容性不好造成的。

  几个典型故障例子及解决办法

  例一:打开IE浏览器或者没过几分钟就会出现"0x70dcf39f"指令引用的"0x00000000"内存。该内存不能为“read”。要终止程序,请单击“确定”的信息框,单击“确定”后,又出现“发生内部错误,您正在使用的其中一个窗口即将关闭”的信息框,关闭该提示信息后,IE浏览器也被关闭。

  解决方法:修复或升级IE浏览器,同时打上补丁。看过其中一个修复方法是,Win2000自升级,也就是Win2000升级到Win2000,其实这种方法也就是把系统还原到系统初始的状态下。比如你的IE升级到了6.0,自升级后,会被IE5.0代替。

  例二:在windows xp下双击光盘里面的“AutoRun.exe”文件,显示“0x77f745cc”指令引用的“0x00000078”内存。该内存不能为“written”,要终止程序,请单击“确定”,而在Windows 98里运行却正常。

  解决方法:这可能是系统的兼容性问题,WinXP的系统,右键“AutoRun.exe”文件,属性,兼容性,把“用兼容模式运行这个程序”项选择上,并选择“Windows 98/Me”。win2000如果打了SP的补丁后,只要开始,运行,输入:regsvr32 c:winntapppatchslayerui.dll。右键,属性,也会出现兼容性的选项。

  例三:RealOne Gold关闭时出现错误,以前一直使用正常,最近却在每次关闭时出现“0xffffffff”指令引用的“0xffffffff”内存。该内存不能为“read” 的提示。

  解决方法:当使用的输入法为微软拼音输入法2003,并且隐藏语言栏时(不隐藏时没问题)关闭RealOne就会出现这个问题,因此在关闭RealOne之前可以显示语言栏或者将任意其他输入法作为当前输入法来解决这个问题。

  例四:我的豪杰超级解霸自从上网后就不能播放了,每次都提示“Ox060692f6”(每次变化)指令引用的“Oxff000011”内存不能为“read”,终止程序请按确定。

  解决方法:试试重装豪杰超级解霸,如果重装后还会,到官方网站下载相应版本的补丁试试。还不行,只好换就用别的播放器试试了。

  例五:双击一个游戏的快捷方式,“Ox77f5cdO”指令引用“Oxffffffff”内存,该内存不能为“read” ,并且提示Client.dat程序错误。

  解决方法:重装显卡的最新驱动程序,然后下载并且安装DirectX9.0。

  例六:一个朋友发信息过来,我的电脑便出现了错误信息:“0*772b548f”指令引用的“0*00303033”内存,该内存不能为“written”,然后QQ自动下线,而再打开QQ,发现了他发过来的十几条的信息。

  解决方法:这是对方利用QQ的BUG,发送特殊的代码,做QQ出错,只要打上补丁或升级到最新版本,就没事了。

  例七:我的笔记本电脑用的XP系统,有时关闭网页时会弹出tbrowser.exe遇到问题需要关闭,然后有弹出0x03e7c738指令引用的0x03e7c738内存,该内存不能为read,请问是怎么回事?

  解决方法:先查杀一下病毒,另外如果你安装了浏览增强之类的软件,请卸掉。

  例八:从桌面或开始菜单中打开任何一个程序, 出现错误提示:"0x…….."指令引用的"0x00000000"内存,该内存不能为"read"。省略号代表可变值。而从运行中打开程序没问题。

  解决方法:运行regedit进入注册表, 在HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionExplorerShellExecuteHooks下,应该只有一个正常的键值"{AEB6717E-7E19-11d0-97EE-00C04FD91972}, 将其他的删除(默认键值当然不要删除)。这一条很常见。

  例九:我三个月前配了台机子。系统比较不稳定,三个月内已经重装过多次系统,四五天前刚装过系统,可是经常随机地出现Explorer-应用程序错误,“0x4a01259d“指令引用的“0x00000000"内存。该内存不能为“read"。要终止程序,请单击“确定“。要调试程序,请单击“取消”。如果点确定,windows桌面就不见了。这种问题在之前的系统也出现过,不知道是不是硬件的问题?

  解决方法:内存的兼容性问题!遇到这类问题,用户可以自行打开机器把内存的位置调动一下,看问题是否可以解决,如果问题依旧,可与你的朋友调换内存使用。

  通过上面的几个例子,可以看到,出现故障的原因有好多种,下面列出已经提到和有可能发生的原因,方便查阅。

问题产生原因

解决方法

内存条坏了

更换内存条

双内存不兼容

使用同品牌的内存或只用一条内存

内存质量问题

更换内存条

散热问题

加强机箱内部的散热

内存和主板没插好或和其它硬件不兼容等

重插内存或换个插糟

硬盘有问题

更换硬盘

驱动问题

重装驱动。如果是新系统,要先安装主板驱动

软件损坏

重装软件

软件有BUG

打补丁或用最新的版本

软件和系统不兼容

给软件打上补丁或者试试系统的兼容模式

软件和软件之间有冲突

如果最近安装了什么新软件,卸载了试试

软件要使用到其它相关的软件有问题

重装相关软件。比如播放某一格式的文件时出错,可能是这个文件的解码器有问题

病毒问题

杀毒

杀毒软件与系统或软件冲突

由于杀毒软件是进入底层监控系统的,可能与一些软件冲突,卸载了试试

系统本身有问题

有时候操作系统本身也会有BUG,要注意安装官方发行的升级程序,像SP的补丁,最好要打上。如果还不行重装系统或更换其它版本的系统了

  Windows系统出现内存错误

  使用Windows操作系统的人有时会遇到这样的错误信息:“0X????????指令引用的0x00000000内存,该内存不能written”,然后应用程序被关闭。如果去请教一些“高手”,得到的回答往往是“Windows就是这样不稳定”之类的义愤和不屑。其实,这个错误并不一定是Windows不稳定造成的。本文就来简单分析这种错误的常见原因。

  一、应用程序没有检查内存分配失败

  程序需要一块内存用以保存数据时,就需要调用操作系统提供的“功能函数”来申请,如果内存分配成功,函数就会将所新开辟的内存区地址返回给应用程序,应用程序就可以通过这个地址使用这块内存。这就是“动态内存分配”,内存地址也就是编程中的“指针”。

  内存不是永远都招之即来、用之不尽的,有时候内存分配也会失败。当分配失败时系统函数会返回一个0值,这时返回值“0”已不表示新启用的指针,而是系统向应用程序发出的一个通知,告知出现了错误。作为应用程序,在每一次申请内存后都应该检查返回值是否为0,如果是,则意味着出现了故障,应该采取一些措施挽救,这就增强了程序的“健壮性”。

  若应用程序没有检查这个错误,它就会按照“思维惯性”认为这个值是给它分配的可用指针,继续在之后的运行中使用这块内存。真正的0地址内存区保存的是计算机系统中最重要的“中断描述符表”,绝对不允许应用程序使用。在没有保护机制的操作系统下(如DOS),写数据到这个地址会导致立即死机,而在健壮的操作系统中,如Windows等,这个操作会马上被系统的保护机制捕获,其结果就是由操作系统强行关闭出错的应用程序,以防止其错误扩大。这时候,就会出现上述的“写内存”错误,并指出被引用的内存地址为“0x00000000”。

  内存分配失败故障的原因很多,内存不够、系统函数的版本不匹配等都可能有影响。因此,这种分配失败多见于操作系统使用很长时间后,安装了多种应用程序(包括无意中“安装”的病毒程序),更改了大量的系统参数和系统文件之后。

  二、应用程序由于自身BUG引用了不正常的内存指针

  在使用动态分配的应用程序中,有时会有这样的情况出现:程序试图读写一块“应该可用”的内存,但不知为什么,这个预料中可用的指针已经失效了。有可能是“忘记了”向操作系统要求分配,也可能是程序自己在某个时候已经注销了这块内存而“没有留意”等等。注销了的内存被系统回收,其访问权已经不属于该应用程序,因此读写操作也同样会触发系统的保护机制,企图“违法”的程序唯一的下场就是被操作终止运行,回收全部资源。计算机世界的法律还是要比人类有效和严厉得多啊!

  像这样的情况都属于程序自身的BUG,你往往可在特定的操作顺序下重现错误。无效指针不一定总是0,因此错误提示中的内存地址也不一定为“0x00000000”,而是其他随机数字。

  如果系统经常有所提到的错误提示,下面的建议可能会有帮助:

  1.查看系统中是否有木马或病毒。这类程序为了控制系统往往不负责任地修改系统,从而导致操作系统异常。平常应加强信息安全意识,对来源不明的可执行程序绝不好奇。

  2.更新操作系统,让操作系统的安装程序重新拷贝正确版本的系统文件、修正系统参数。有时候操作系统本身也会有BUG,要注意安装官方发行的升级程序。

  3.试用新版本的应用程序。

漫谈硬盘彻底损坏后的数据抢救
作者:52硬件

  伴随着科技的发展,80G、120G的硬盘在普通用户中都已经屡见不鲜了。但是,在长时间的使用硬盘过程中,我们也在承受着硬盘随时也会出错的风险,轻则硬盘的数据丢失,重则整个硬盘报废,造成不可预料的严重后果。采用什么办法,才能解决常见的硬盘数据丢失故障,成为用户十分关注的问题。

一、硬盘的分区
  对于你手中硬盘来说,首先要做的事情就是分区了。硬盘分区是否合理直接影响到以后工作的便利性和数据的安全性。我们最常见到的分区表错误也是硬盘的最严重错误,不同错误的程度会造成不同的损失。如果是没有活动分区标志,则计算机无法启动。但从软驱或光驱引导系统后可对硬盘读写,可通过fdisk重置活动分区可进行修复。如果是某一分区类型错误,会造成某一分区的丢失。

  在一般情况下完成硬盘分区之后,会形成3种形式的分区状态;即主分区、扩展分区和非DOS分区。在硬盘中非DOS分区(Non-DOS Partition)是一种特殊的分区形式,它是将硬盘中的一块区域单独划分出来供另一个操作系统使用,对主分区的操作系统来讲,是一块被划分出去的存储空间。只有非DOS分区内的操作系统才能管理和使用这块存储区域,非DOS分区之外的系统一般不能对该分区内的数据进行访问。

  主分区则是一个比较单纯的分区,通常位于硬盘的最前面一块区域中,构成逻辑C磁盘。其中的主引导程序是它的一部分,此段程序主要用于检测硬盘分区的正确性,并确定活动分区,负责把引导权移交给活动分区的DOS或其他操作系统。此段程序损坏将无法从硬盘引导,但从软区或光区之后可对硬盘进行读写。

  而扩展分区的概念是比较复杂的,极容易造成硬盘分区与逻辑磁盘混淆;分区表的第四个字节为分区类型值,正常的可引导的大于32mb的基本DOS分区值为06,扩展的DOS分区值是05。如果把基本DOS分区类型改为05则无法启动系统 ,并且不能读写其中的数据。如果把06改为DOS不识别的类型如efh,则DOS认为改分区不是DOS分区,当然无法读写。很多人利用此类型值实现单个分区的加密技术,恢复原来的正确类型值即可使该分区恢复正常。分区表中还有其他数据用于纪录分区的起蓟蛑罩沟刂贰U庑┦莸乃鸹到斐筛梅智幕炻一蚨В话阄薹ń惺止せ指?,唯一的方法是用备份的分区表数据重新写回,或者从其他的相同类型的并且分区状况相同的硬盘上获取分区表数据,否则将导致其他的数据永久的丢失。由于微机操作系统仅仅为分区表保留了64个字节的存储空间,而每个分区的参数占据16个字节,所以操作系统只允许存储4个分区的数据,实际使用中4个逻辑磁盘往往不能满足需求;我们常说的硬盘扩展分区,它只是一个指向下一个分区的指针,这种指针结构将形成一个单向链表。所以一旦单向链表发生问题,将会导致逻辑磁盘的丢失。

二、硬盘的数据恢复

1、误格式化硬盘数据的恢复
  在DOS高版本状态下,格式化操作format在缺省状态下都建立了用于恢复格式化的磁盘信息,实际上是把磁盘的DOS引导扇区,fat分区表及目录表的所有内容复制到了磁盘的最后几个扇区中(因为后面的扇区很少使用),而数据区中的内容根本没有改变 。我们都知道在DOS时代有一个非常不错的工具UnFormat,它可以恢复由Format命令清除的磁盘。如果用户是在DOS下使用Format命令误格式化了某个分区的话,可以使用该命令试试。不过UnFormat只能恢复本地硬盘和软件驱动器,而不能恢复网络驱动器。UnFormat命令除了上面的反格式化功能,它还能重新修复和建立硬盘驱动器上的损坏分区表。

  但目前UnFormat已经显得有点“力不从心”了,再使用它来恢复格式化后分区的方法已经有点过时了,我们可以使用多种恢复软件来进行数据恢复,比如使用Easyrecovery 6.0和Finaldata2.0等恢复软件均可以方便的进行数据恢复工作。另外DOS还提供了一个miror命令用于纪录当前的磁盘的信息 ,供格式化或删除之后的恢复使用,此方法也比较有效。

2、零磁道损坏时的数据恢复
  硬盘的主引导记录区(MBR)在零磁道上。MBR位于硬盘的0磁道0柱面1扇区,其中存放着硬盘主引导程序和硬盘分区表。在总共512字节的硬盘主引导记录扇区中,446字节属于硬盘主引导程序,64字节属于硬盘分区表(DPT),两个字节(55 AA)属于分区结束标志。零磁道一旦受损,将使硬盘的主引导程序和分区表信息将遭到严重破坏,从而导致硬盘无法引导。0磁道损坏判断:系统自检能通过,但启动时,分区丢失或者C盘目录丢失,硬盘出现有规律的“咯吱……咯吱”的寻道声,运行SCANDISK扫描C盘,在第一簇出现一个红色的“B”,或者Fdisk找不到硬盘、DM死在0磁道上,此种情况即为零磁道损坏!

  零磁道损坏属于硬盘坏道之一,只不过它的位置相当重要,因而一旦遭到破坏,就会产生严重的后果。如果0磁道损坏,按照目前的普通方法是无法使数据完整恢复的,通常0磁道损坏的硬盘,可以通过PCTOOLS的DE磁盘编辑器(或者DiskMan)来使0磁道偏转一个扇区,使用1磁道来作为0磁道来进行使用。而数据可以通过Easyrecovery来按照簇进行恢复,但数据无法保证得到完全恢复。

3、分区表损坏时的数据修复
  硬盘主引导记录(MBR)所在的扇区也是病毒重点攻击的地方,通过破坏主引导扇区中的DPT(分区表),就可以轻易地损毁硬盘分区信息,达到对资料的破坏目的。分区表的损坏是分区数据被破坏而使记录被破坏的。所以,我们可以使用软件来进行修复。

  一般情况下,硬盘分区之后,要备份一份分区表至软盘、光盘或者移动存储活动盘上。在这方面,国内著名的杀毒软件KV3000系列和瑞星都提供了完整的解决方案。但是,对于没有备份分区表的硬盘来说,虽然KV3000也提供了相应的修复方法,不过成功率相对就要低很多了。在恢复分区上,诺顿磁盘医生NDD是绝对强劲的工具,可以自动修复分区丢失等情况,可以抢救软盘坏区中的数据,强制读出后搬移到其它空白扇区。在硬盘崩溃或异常的情况下,它可能带给用户一线希望。在出现问题后,用启动盘启动,运行NDD,选择Diagnose进行诊断。NDD会对硬盘进行全面扫描,如果有错误的话,它会向你提示,然后只要根据软件的提示选择修复项目即可,而且这些问题它都能轻轻松松地解决。

  另外,大家非常熟悉的中文磁盘工具DiskMan,在重建分区表方面具有非常实用的功能,用于修复分区表的损坏是最合适不过了。如果硬盘分区表被分区调整软件(或病毒)严重破坏,必将引起硬盘和系统瘫痪的严重后果,而DiskMan可通过未被破坏的分区引导记录信息重新建立分区表。只要在菜单的工具栏中选择“重建分表”,DiskMan即开始搜索并重建分区。使用过程之中,DiskMan将首先搜索0柱面0磁头从2扇区开始的隐含扇区,寻找被病毒挪动过的分区表。紧接着要搜索每个磁头的第一个扇区。整个搜索过程是采用“自动”或“交互”两种方式进行。自动方式保留发现的每一个分区,适用于大多数情况。交互方式对发现的每一个分区都会给出提示,由用户选择是否保留。当采用自动方式重建的分区表一旦出现不正确的故障时,我们可以采用交互方式重新进行搜索。

  但是,重建分区表功能也不能保证做到百分之百的修复好硬盘分区表。所以要记住“求谁也不如求自己”还是保护好自己的硬盘吧!尽量避免硬件损伤以及病毒的侵扰,一定要做好分区表的备份工作;如果没有做备份的话,请下载一个DISKGEN软件,然后在工具选项中,选备份分区表,一般默认是备份到软驱上面的,如果你没有软驱,就要改一下路经,输出到硬盘目录里。然后你应该把这个备份文件刻录到光盘或者是拷贝到U盘里,千万不要放到硬盘里哦,那样就与没有备份的效果一个样了!

4、误删除之后的数据恢复
  在计算机使用过程中我们最常见的数据恢复就是误删除之后的数据恢复了,但是在这个时候一定要记住,千万不要再向该分区或者磁盘写入信息,因为刚被删除的文件被恢复的可能性最大。实际上当用fdisk删除了硬盘分区之后,表面现象是硬盘中的数据已经完全消失,在未格式化时进入硬盘会显示无效驱动器。如果了解fdisk的工作原理,就会知道,fdisk只是重新改写了硬盘的主引导扇区(0面0道1扇区)中的内容 。具体说就是删除了硬盘分区表信息,而硬盘中的任何分区的数据均没有改变。由于删除与格式化操作对于文件的数据部分实质上丝毫未动,这样,就给文件恢复提供了可能性。我们只要利用一些反删除软件(它的工作原理是通过对照分区表来恢复文件的),用户可以轻松地实现文件恢复的目的。同时误格式化同误删除的恢复方法在使用上基本上没有大的区别,只要没有用Fdisk命令打乱分区的硬盘(利用FDISK命令对于40G以内的硬盘进行分区,还是很方便实用的,所有启动盘上都有,主板支持也没有任何问题),要恢复的文件所占用的簇不被其他文件占用,这样,格式化前的大部分数据仍是可以被恢复的。而且如果你的Windows系统还可以正常使用的话,那么最简单的恢复方法就是用Windows版EasyRecovery软件,它恢复硬盘数据的功能十分强大,不仅能恢复被从回收站清除的文件,而且还能恢复被格式化的FAT16、FAT32或NTFS分区中的文件。

  该软件的使用方法十分简单,解压缩安装以后,运行EasyRecovery,出现主界面。左侧4个功能的按钮以及2个软件支持按钮,磁盘诊断可以帮助我们测试潜在硬件故障、监视并报告潜在驱动器故障、查看驱动器空间使用详细资料、IDE硬盘跳线设置、以及分析文件结构和创建可引导的诊断磁盘。而且6个功能按钮提供的数据恢复选项功能,对于我们需要的硬盘资料恢复来说至关重要,EasyRecovery Professional提供了多种数据恢复选项。其中包括:使用高级选项自定义数据恢复功能、查找并恢复已删除文件、从一个已格式化的卷中恢复文件、不以来任何文件系统结构信息进行恢复此软件还可以保存恢复数据进度以及创建可引导的紧急引导软盘。

  实际操作中,我们将选择高级选项自定义数据恢复功能来进行数据恢复操作,经过扫描系统会显示磁盘驱动器信息,在这里我们选择了恢复资料的硬盘分区C盘,按照提示要求,点击“下一步”后软件EasyRecovery Professional将自动扫描分区,之后会把所有详细文件信息显示出来,其中包括目前还存在的和已经被删除的文件。紧接着要选中你想恢复的文件,选择“下一步”进入到选择目标位置屏幕,过一会后EasyRecovery成功的找回了丢失的文件,这时选择“取消”退出该工具即可。

  以上是当我们遇到硬盘数据丢失后如何进行数据恢复的几种方法,相信这些对于电脑高手的朋友们来说真的不算什么,但还有不少初学电脑的朋友在为硬盘数据的丢失而苦恼啊!通过今天简单介绍的几种方法,衷心希望能对大家有点帮助。

  目前很多地方都转载着利用9行代码史windows崩溃的文章,不过我发现没有关于为什么会使windows崩溃的分析。我先把原文给大家看看。然后把具体的细节说一下。   

  微软一直声称Windows XP多么多么稳定可靠,但日前一位名为Masaru Tsuchiyama的外国编程爱好者刊出了一小段C语言代码。这一只有9行的小程序如果在Windows XP/2000下运行,则可导致系统完全崩溃,并重新启动。但此程序对其他版本的Windows没有任何影响。这一产生无限循环输出的小程序的代码如下:

  #include
    int main( void )
    { 
    for(;{
        printf( "hung up " );
        print("hung up ";
        }
    return 0;
    }

  如果去掉Print语句,此程序还会导致NT 4.0系统出现蓝屏错误。

  但愿微软赶快修补这一漏洞。同时提醒大家,此代码只可用于研究,不得用于任何非法勾当。

  如果去掉Print语句,此程序还会导致NT 4.0系统出现蓝屏错误。   

  以上遍是网上纷纷转载的原文。   

  关于为什么会导致错误,就在看下面的分析吧。   

  是退格

  代码是用退格符把console里的光标退成null,

  然后显示任一字符(除 ),即崩溃.

  但是一般情况是不能退出规定的区域的,

  而如的前一个字符是 则可以退出规定的区域(bug?).

  双击运行时,系统将新建一个console,所以我们的显示在console

  的左上角,我们只需两个就可退出屏幕(第一个吃掉 ).

  原因是win32子系统意外中止导致系统崩溃.smss是windows系统建立的第一个用户进程,他的工作之一是建立csrss和winlogon进程,然后一直等待这两个进程的句柄,如果这两个进程意外中止,

  smss将导致系统崩溃.csrss进程就是专门负责所有win32进程和系统进行通信的进程.所有win32进程的系统调用都会由csrss帮你完成,但是这样做因为需要进程切换所以效率太低.所以在windowsNT从3.51升级到4.0时将许多部分从用户态移入内核态,win32进程的系统调用将直接进行以减少进程切换时间.但是仍有少量系统调用需要csrss进程完成,据我所知createprocess

  是这样的函数,所有console上的显示是这样的函数(还有其他的).

  当我们调用printf(" a")最终将调用WriteFile API.

  WriteFile((HANDLE)7," a",NULL,NULL)等同于

  printf(" a"),7是console标准输入的句柄.

  WriteFile判断句柄类型,如是文件句柄将调用ntdll.dll中的

  NtWriteFile函数.如是console句柄将调用WriteConsoleA函数.

  WriteConsoleA函数将调用ntdll.dll中的csrClientCallServer

  函数通知csrss进程,然后调用NtRequestWaitReplyPort等待结果.

  估计是csrss进程在处理这个请求过程中出错了.   

  几年前侯杰老师分析后我整理出来的。因为没有地方说过,甚至简单的分析都没有,所以我才把他翻出来 :) 细心的人发现csrss出错的细节没有描述,谁有时间就补充一下吧..

  一、传统的捆绑器

  这种原理很简单,也是目前用的最多的一种。就是将B.exe附加到A.exe的末尾。这样当A.exe被执行的时候,B.exe也跟着执行了。这种捆绑器的代码是满网都是。我最早是从jingtao的一篇关于流的文章中得知的。就目前来说,已经没什么技术含量了。

  检测方法:稍微懂一点PE知识的人都应该知道。一个完整有效的PE/EXE文件,他的里面都包含了几个绝对固定的特点[不管是否加壳]。一是文件以MZ开头,跟着DOS头后面的PE头以PE开头。有了这两个特点,检测就变得很简单了。只需利用UltraEdit一类工具打开目标文件搜索关键字MZ或者PE。如果找到两个或者两个以上。则说明这个文件一定是被捆绑了。不过值得注意的是,一些生成器也是利用了这个原理,将木马附加到生成器末尾,用户选择生成的时候读出来。另外网上流行的多款“捆绑文件检测工具”都是文件读出来,然后检索关键字MZ或者PE。说到这里,相信大家有了一个大概的了解。那就是所谓的“捆绑文件检测工具”是完全靠不住的一样东西。

  二、资源包裹捆绑器

  就这原理也很简单。大部分检测器是检测不出来的,但灰鸽子木马辅助查找可以检测出捆绑后未经加壳处理的EXE文件。但一般人都会加壳,所以也十分不可靠。这个学过编程或者了解PE结构的人都应该知道。资源是EXE中的一个特殊的区段。可以用来包含EXE需要/不需要用到的任何一切东西。利用这个原理进行100%免杀捆绑已经让人做成了动画。大家可以去下载看看。那捆绑器是如何利用这一点的呢?这只需要用到BeginUpdateResource、UpdateResource和EndUpdateResource这三个API函数就可以搞定。这三个API函数是用来做资源更新/替换用的。作者只需先写一个包裹捆绑文件的头文件Header.exe.头文件中只需一段释放资源的代码。而捆绑器用的时候先将头文件释放出来,然后用上面说的三个API函数将待捆绑的文件更新到这个头文件中即完成了捆绑。类似原理被广泛运用到木马生成器上。

  检测方法:一般这种很难检测。如果你不怕麻烦,可以先将目标文件进行脱壳。然后用“灰鸽子木马辅助查找”或“ResTorator”一类工具将资源读出来进行分析。但这种方法毕竟不通用。所以还是推荐有条件的朋友使用虚拟机。

  三、编译器捆绑法

  暂时不知用什么名字来形容,所以只能用这个来代替。这种方法相当的阴险。是将要捆绑的文件转换成16进制保存到一个数组中。像这样muma:array[0..9128] of Byte=($4D,$5A,$50….$00);

  然后用时再用API函数CreateFile和WriteFile便可将文件还原到硬盘。这里稍稍学过编程的都知道。代码中的数组经过编译器、连接器这么一搞。连影都没了。哪还能有什么文件是吧?所以就这种方法而言,目前还没有可以查杀的方法。这种方法可以利用编程辅助工具jingtao的DcuAnyWhere或Anskya的AnyWhereFileToPas来实现。

  四、最最毒辣的一种

  因为暂时用的人较少,且危害性及查杀难度太大。[一个被杀的病毒直接捆绑就能免杀,汗~]所以就不公布了。此法查杀方法通用性极差。如果流行,估计大家连动画都不敢下着看了。HOHO~

  补充:可以利用一些第三方工具将硬盘和注册表监视起来以后再运行那些你不确定是否被捆绑的程序。这样,一旦硬盘出现变化,或有文件新建,或有文件改变都会被记录在案。就算是查找起来也方便一点。

  不可不说一下学习破解的三个阶段:

  初级,修改程序,用ultraedit等工具修改exe文件,称暴力破解,简称爆破。

  中级,追出软件的注册码。

  高级,写出注册机。

  先说这爆破。所谓爆破,就是指通过修改可执行文件的源文件,来达到相应的目的。你不明白?呵呵,举个例子好了,比如说某共享软件,它比较用户输入的注册码,如果用户输入的,跟它通过用户名(或其它)算出来的注册码相等的话(也就是说用户输入的注册码正确了),那么它就会跳到注册成功的地方去,否则就跳到出错的地方去。

  明白过来了吧,我们只要找到这个跳转指令,把它修改为我们需要的“造型”,这样,我们是不是就可以为所欲为了?(某软件双手放在胸口,你要干嘛?)

  常见的修改方法有两种,我给你举例说明:

  no.1

  在某软件中,这样来进行注册:

  00451239 CALL 00405E02 (关键CALL,用来判断用户输入的注册码是否正确)

  0045123D JZ 004572E6 (!!!<–此为关键跳转,如果用户输入的注册码正确,就跳向成功处,即004572E6处)

  0045XXXX YYYYYYYYYY

  XXXXXXXX YYYYYYYYYY

  XXXXXXXX YYYYYYYYYY

  XXXXXXXX 执行到此处,就提示用户注册失败

  ..提示用户注册码不正确等相关信息

  …

  004572E6 … <–(注册成功处!!!)

  …提示用户注册成功等相关信息

  呵呵,看明白了吗?没有的话,我来给你讲一下。在软件执行到00451239处的时候,CALL置0045E02处来进行注册码判断。接着回来后就来一个跳转语句,即如果用户输入的注册码正确就跳到004572E6处,跳到此处,就算是注册成功了。如果用户输入的注册码不正确的话,那么就不会在0045123D处进行跳转,而一直执行下去。在下面等它的,是注册失败部分。

  想明白了吗?嘿嘿…没错,我们只要把那个关键跳转JZ给改为JNZ(如果用户输入的注册码错误,就注册成功,输入正确则注册失败)。当然你也可以将JNZ修改为Jmp,这样的话,你输入的注册码无论正确与否。都可以注册成功。

  no.2

  我们再来讲一下另外的一种情况:

  00451239 CALL 00405E02 (关键CALL,用来判断用户输入的注册码是否正确)

  0045123D JNZ 004572E6 (!!!<–此为关键跳转,如果用户输入的注册码不正确,就跳向失败处,即004572E6处)

  0045XXXX YYYYYYYYYY

  XXXXXXXX YYYYYYYYYY

  XXXXXXXX YYYYYYYYYY

  XXXXXXXX 执行到此处,就提示用户注册成功

  …提示用户注册成功等相关信息

  …

  004572E6 … <–(注册失败处!!!)

  …提示用户注册码不正确等相关信息

  这次我相信,并且深信不疑。你一定明白了。我还是不明白…倒…

  你一定看出跟第一种情况不同的地方了吧。没错!它与第一种不同的,就是第一种情况是如果注册码正确,就跳到注册成功处,如果没有跳走,就会执行到失败处。而这一种情况则是如果注册码不正确,就跳到注册失败处,否则将执行到注册成功处。

  这种情况的修改,除了把JNZ改为JZ外,还可以将其改为Nop,Nop这个指令没有任何意义,将该条指令修改为Nop后,便可随意输入注册码来进行注册了。

  原理以经给你讲了,下面我们再来讲一下具体的修改办法吧。(我假设你以经明白了我所说的工具的使用方法)

  先说一下虚拟地址和偏移量转换的问题,在SoftICE和W32Dasm下显示的地址值是所谓的内存地址(memory offset),或称之为虚拟地址(Virual Address,VA)。而十六进制工具里,如:Hiew、Hex Workshop等显示的地址就是文件地址,称之为偏移量(File offset) 或物理地址(RAW offset)。

  所以当我们要通过那些十六进制工具来对可执行文件中的相应指令进行修改的话,先要找到它的File offset。我们没有必要去使用那些专门的转换工具,在W32Dasm中就有这个功能,比如说你W32Dasm中来到0045123D处,在W32Dasm界面下方的状态栏中就会出现该条指令的虚拟地址和偏移地址,即@:0045123D @offset 0005063Dh 后面的这个0005063Dh就是相应的偏移地址。我们得到该地址后,便可用UltraEdit等十六进制工具来对可执行文件进行修改了。比如使用UltraEdit,你先用UltraEdit打开该可执行文件,然后按Ctrl+G,接着输入你得到的偏移地址,就可以来到其相应的机器码处。

  再给你讲一下机器码,所谓的机器码。就是你看到的那些个十六进制数据了。还记的它们与汇编指令是一一对应的吗?

  以下这几个是爆破时要用到的,其它的如果感兴趣,可自行查看相关资料:

  JZ=74;JNZ=75;JMP=EB;Nop=90

  爆破的时候,只要对以上机器码进行相应的修改就行了,比如第一种情况的时候,可以将74修改为EB,即将JZ修改为JMP。而第二种情况,责需将75修改为90,即将JNZ修改为Nop。

  由于本章只讲原理,具体一点的。如怎样找到关键跳转等,我们在下一章中再讲。(一个砖头飞了上来!嘿嘿,这次被俺接到了)

  上边讲了爆破的原理,你需要明白的是。爆破只是你学习Crack的开始,是很简单的手段。刚入门的时候可以玩玩儿,但希望你不要就此不前!

  (嘿嘿,再说了。人家的软件中不是都说了嘛,不准对其进行逆向修改。你动了人家的身子,怎么能不买帐呢? )

  偶就不喜欢爆破,做不出注册机也要找出注册码。否则我就不会去注册这个软件,既然想不掏钱,就要靠你自己的本事。(等以后我有钱了,会考虑去注册那些优秀的共享软件的 )。所以,从某种意义上来说,我是一个正人君子

  其实要找到注册码并不是一件多么难的事,我是指你所针对的软件不太那个的时候 不过你无需惧怕。

  刚才我们说爆破的时候不提到过关键CALL吗?一般情况下,这个关键CALL就是对两个注册码(一个是软件自身通过你的注册名或机器什么的计算出来的正确的注册码,令一个就是你输入的错误的注册码)进行比较。我前边提到过,CALL之前一般会把所用到的数据先放到一个地方,CALL过去的时候再从这些地方把先前放入的数据取出来,进行相应的处理。这个关键CALL也是这样,在CALL之前,一般会把那两个注册码放到堆栈或某个寄存器中。嘿嘿,我们只要在调试器中,单步执行到该CALL,在未进去之前通过CALL之前的指令判断其将正确的和不正确的注册码放到哪里了。然后再用相应指令进行查看就成了,我说过不难的。

  下面列出两个最常见的情况(可参考相关教程):

  no.1

  mov eax [ ] 这里可以是地址,也可以是其它寄存器

  mov edx [ ] 同上,该条指令也可以是pop edx

  call 00?????? 关键call

  test eax eax

  jz(jnz)或jne(je) 关键跳转

  看明白了吧,在关键CALL之前,软件会把两个注册码分别放入eax和edx中,你只要在CALL处下d eax或d edx就能看到正确的注册码了。

  no.2

  mov eax [ ] 这里可以是地址,也可以是其它寄存器

  mov edx [ ] 同上,该条指令也可以是pop edx

  call 00?????? 关键call

  jne(je) 关键跳转

  以上两种情况最为常见,而那些个不太常见的情况,我们这里就不再提了。到下下一章的时候,我会给你讲相关方法的…

  关于查找软件注册码的部分,就到这里。具体内容,下下一章咱们再说。(不是说了吗?我以经可以接到你的砖头了,干嘛还要丢呢? )

  最后,再来说最后的所谓的高级阶段,如果你相信自己。并且热爱Crack,那么你一定会熬到这个阶段的,只是时间因人而异。

  其实分析软件的算法,是有好多技巧在里面的。呵呵,最起码我刚开始的时候就摸不着头脑,那么多CALL,每个看起来,都很重要,都追一遍?结果连好多API都被追了进去。等你自己真正用心分析了一个软件的算法,并写出了注册机后。你就会明白其中的道理了。