| 网站首页 | 绿色软件 | 安全中心 | 屏保中心 | 源码中心 | 电子书库 | 教程库 | 图片库 | 资料库 | 论坛 | 笑话 | 手机 | 算命 | 绿站旧版 | 返回总部 | 
您现在的位置: 绿色软件站 >> 教程库 >> 绿化室 >> 软件绿化 >> 文章正文
Front Page 2000 迷你版的制作过程(三)         
Front Page 2000 迷你版的制作过程(三)
作者:超级分析 文章来源:本站原创 点击数: 更新时间:2005-11-28 23:02:04

  HKEY_LOCAL_MACHINE\Software\CLASSES\CLSID这个键是系统中相当重要的键。系统大部分操作都要依*这个键,比如鼠标右键等。同时大多数程序也会在这个键下留下自己需要的键。在前面提到删除注册表主键查找程序所需键的时候是要跳过HKEY_LOCAL_MACHINE\Software\CLASSES\键的,如果删除它系统容易死机(98系统)。现在要在这个键中查找程序需要的键。

  现在的程序可以启动,那有两种可能,一种可能是程序不需要clsid中的键,一种可能是需要clsid中的某个键。要想判断是否需要clsid键中的内容,可以先把clsid键恢复到未安装Front Page 2000之前的状态,那么如何恢复呢?

  首先把未安装Front Page 2000之前的系统注册表文件备份打开,然后双击保存clsid键的那一份注册表文件,这时会出现一个对话框询问是否把注册表文件添加到注册表,

  这时不要动它,打开注册表编辑器,在收藏夹选择“CLSID--3”,定位到HKEY_LOCAL_MACHINE\Software\CLASSES\CLSID。然后删除这个键。这时最好不要进行其它的操作,因为没有了clsid键,许多功能都不正常的。这时再把刚才的注册表文件导入对话框点确定,把未安装时的clsid键值添加到注册表。这样一来,注册表中的clsid键就变成了未安装Front Page 2000之前的状态,而其它部分都保持原样。

  这种方法简单,比用卸载程序卸载的彻底。有些程序在卸载的时候卸载的不全,会在注册表中留些垃圾,而这种方法恢复得干净,一点痕迹也不留。而且这种方法好玩啊,想想吧,一般人不敢动的系统重要的键却被自己删来删去,呵呵。

  接下来启动一下程序,程序可以启动,但是背景为灰色。点击新建文件时提示:程序没有在此系统上安装成功,无法运行。

  这就说明程序需要clsid中的某个键,没有这个键就无法运行。那么程序究竟需要哪一个键呢?下面我们就想办法把这个键查找出来。

  clsid键下有1000多个子键,如果用前面提到的删除法逐个删除测试太累,太麻烦,而且大多数都是与程序无关的键。当在众多的键中查找一两个键的时候,用“排除法”来查找最合适。

  “排除法”适合在众多的键中查找少数的几个键,这有点像捉迷藏,也有点像推理游戏。程序运行所需要的键就包含在整个注册表文件中,但是究竟在哪里却不知道。先把整个注册表文件分成几份,然后再分别把每一份添加到注册表文件中,添加一份,启动一下程序测试一下。如果程序不能正常启动,就说明需要的键不在刚才添加的那一份中,如果程序可以启动,就说明需要的键就在刚才添加的那一份中,其它几份中不包含程序所需要的键。这样就可以把查找范围缩小好多。然后把注册表还原,再把找到的那一份注册表文件再切分,再测试。这样找到最后整个注册表文件中只剩下一个键值的时候就可以确定程序需要的就是它啦。

  我常在自己的文章中说“把注册表文件分为几份”,这句话的意思就是说把注册表文件的内容分开,分别保存为几个单独的注册表文件。注册表文件其实就是某种特定格式的纯文本文件,扩展名为reg。分割注册表指就是编辑注册表文件的本文部分。在注册表文件上点右键,选择“编辑”就会用记事本打开注册表文件,然后就像处理文本一样处理它,下面的几副图片是个例子,把一份注册表文件分成了四份:

这是一个注册表文件的内容,里面有四个键值。下面把它分为四份:

  上面的四副图片的内容就是把注册表分割成四份时的样子,我怕说不明白,用图片显示,比较直观,这样看可以看懂了吧,在分割注册表文件的时候只要保留注册表的文件格式,就是第一行的文字,其它内容是可以任意处理的。只要懂得这个道理就行,别的注册表文件只是比它内容多而已。

  
  首先找到前文提到的完整安装Front Page 2000后备份的注册表文件,新建一个文件夹,把03-clsid复制到这个文件夹中,先把它改名为01,再把它复制五份,先在第一个文件上点右键,选择“编辑”,这时会用记事本打开注册表文件。(这里就可以显出notepadEx的优点来了,如果用视窗自带的记事本只能打开小于60kb的文件,而clsid导出的注册表文件有750多k,还要询问是否用写字板打开,麻烦。)

  先拖动滚动条到大约五分之一处,然后把光标定位到那里,这时按住键盘上的ctrlt和shift两个键不放,再按键盘右侧的end键,这样就可以把光标处到结尾的所有内容选中。(在编辑文本文件的时候,按ctrl不放,再按end键,可以使光标从任意位置到达文件的结尾处。按shift键不动再移动光标,就会把移动的部分选中,上面只是把两个功能结合起来使用。)再按ctrl+x快捷键,把选中的部分剪切,然后关掉当前文件,关闭时选择保存,这样就把第一个注册表文件剪切掉五分之四,剪切掉的内容在“剪切板”中,这时不要进行“复制”操作,要不然会丢掉剪切的内容的。

  接下来打开第二个注册表文件,把光标向下移动两行,再用;ctrl+shift+end组合键把第三行至结尾的所有内容删除掉,然后把剪切板中的所有内容粘贴到第二个注册表文件中,这一步只是为了要它的注册表文件的格式。下面再把滚动条移动到四分之一处,然后用上面的操作把剩下的内容选中后剪切,再打开第三个注册表文件,删除,粘贴,再剪切。这样进行五次,就可以把注册表文件分为五份了。剪切注册表时不需要太平均,只要大概剪切一下就可以,而且也不一定要分为五份,根据自己的爱好可以随意的分。需要注意的是在剪切时要把整段的留在一起,如下面一段:

[HKEY_CURRENT_USER\Software\ACD Systems\ACDSee\50\Editors]
"FotoCanvas2"="C:\\program files\\ACD Systems\\5.0\\FotoCanvas2.exe"
@="C:\\program files\\ACD Systems\\5.0\\FotoCanvas2.exe"

  这一段的内容要留在同一个文件中,如果把这段剪切到两个文件中,那么这个键值就无法导入注册表。

  接下来把刚才切分的第一份注册表文件添加到注册表,再启动一下程序,程序还是灰色背景,说明程序需要的键不在这一份中,再添加第二份,再启动程序测试。当把第四份添加到注册表中以后,程序可以正常启动,这说明程序所需要的键有可能存在于第四分中,也有可能需要多个键分别存在于一至四份中,所以再把clsid键删除,把未安装的clsid导入系统,然后再直接把切分的第四份注册表文件添加到注册表,程序可以正常启动,这就说明程序所需要的键在第四份注册表文件中,其它的注册表文件是没有用的。这样一次就把注册表文件减小到五分之一。

  然后把第四份的注册表文件改名为02,再新建立一个文件夹,把其它的没有用的文件拖到新建立的文件夹中,然后再把02复制几份,把复制的几份分割开,但是02要保持原样不动。这是为了以后查找方便。万一在分割的时候按错键,弄错了内容,可以重新复制继续工作了。要始终注意做好备份。重新删除clsid,重新导入未安装状态的clsid注册表文件,重新测试。这样经过大约6次就可以查出程序所需的键究竟是哪一个键。

  完整的clsid键大约有750kb,
  第一次分割后大约每一份有120mb左右。
  第二次分割时大约有30kb左右。
  第三次分割时大约有6kb左右。
  第四次分割时大约有1kb左右。
  第五次约有几百字节。几百字节听起来好像是很多,其实只是两个键,呵呵,第六次分完以后只剩下一个键:
[HKEY_LOCAL_MACHINE\Software\CLASSES\CLSID\{0E5EDCF0-9F3B-11D1-B3C3-0060977B463D}\InprocServer32]
@="C:\\Program Files\\Microsoft Office\\Office\\FPEDITAX.DLL"
"ThreadingModel"="Apartment"

  这时把clsid键还原到未安装状态以后,只要输入这个键,就可以使Front Page 2000正常启动。通过六次的分割,就在近千个键中找到程序运行所需要的一个键。这就是“排除法”的好处,只是操作起来有些麻烦,这种方法可以适合在很多方面。

  clsid键查找完以后就没有什么难的啦。剩下的只是第二根键。

  第二根键保存的只是程序的一些自定认设置一类信息。所以并不太重要。用前文提到的方法,删除键,再启动程序测试。用这种方法去查,最后剩下的就是最精简的键。由于第二根键在系统是不太重要,所以删除的时候也不用害怕什么,我曾试过,在98系统下把第二根键所有子键删除,系统也可不死机。

  查找第二根键比较简单,我就不做详细说明了。大体上和第三根键相同,都是需要office和installer两个子键,很简单的就可以查找出来。需要说明的是HKEY_CURRENT_USER\SOFTWARE\Microsoft\Installer\Components子键下有二三十个子键,由于数量不多,我也没仔细精简它,而且根据经验判断,这个键是针对程序的某些功能的,没有它可能程序可以运行,但是功能不全,所以这次也没动它,就直接保存出来了。

  HKEY_CURRENT_USER\SOFTWARE\Microsoft\Installer\Features只需要一个子键,但是它的键值却很多,在右侧的窗口中大约有二百多个键值。这些可以用“排除法”去处理,最后只剩下几个键,不太难。

  查找完第二和第三根键以后,基本上就算完工了。换上一个全新的系统,把安装时向系统写入的文件复制到新系统中,然后把注册表键值导入到新系统,启动程序。程序可以正常启动,这就说明是成功了。但是在使用中还是不正常的,因为缺少键值的关系。例如新建文件的时候无法找到文件模板等等,这些就属于后期工程了。一边使用一边测试,发现什么功能不全就尽量恢复这种功能。如上面提到的网页模板找不到,这应该是缺少键值所至,所以就把正常安装时的
  02-installer
  02-office
  03-installer
  03-office
  03-clsid
  几个分支分别导入系统,导入一个测试一下,用这样的方法先判断一下需要的功能具体在哪个键上,然后再用“排除法”精简那个键,把最后找到的键值合到前面精简的注册表文件中去。

  后期工作比精简时要麻烦,以前我精简Front Page XP的时候用了好长时间才精简完的。但是这次精简Front Page 2000的时候我没有遇到这样的麻烦,这是因为精简过程中我遇到了另一个问题。正是由于这个问题,才使我成功的制作出Front Page 2000的迷你版。

  以前我在单位精简成功以后,把精简后的部分拿到家里的电脑上测试,结果无法启动,两台电脑用的全是98系统,而且是同一套安装文件安装出来的系统,在单位可以运行的程序在我的电脑上却运行不了。当时我不知道是为什么。无耐下只好在家里重新精简一下。在精简的过程中发现
HKEY_LOCAL_MACHINE\Software\Microsoft\Office\9.0\Common\LV
  这个键有问题,我明明是把单位精简的键值输入到系统中,却启动不了,而把我家中电脑安装的这个键导入时就可以启动程序,这说明两台电脑中这个键的键值是不一样的。我猜想这是安装程序根据不同的硬件环境算出来的,如果真是这样的话,那么精简出来的迷你版只能在一台电脑中使用,不能在其它电脑上使用。如果想在其它电脑上使用,就需要安装程序在那台电脑上算出这个键的键值才行。这样不是和正常安装一样吗?这样精简还有什么意义。这样做出来的迷你版中能算是“半成品”。Front Page XP就是因为这个问题才没有发表的,本想去欺负一下Front Page 2000,以为这个早期的版本不存在这样的问题,没想到Front Page 2000也要根据不同的硬件而改变,所以发现这个问题以后我就放弃了,也没有进修复网页模板等功能。虽然放弃,但总不死心,总是在想能不能解决掉这个问题。

  后来在写这篇文章的时候我又重新精简了一次Front Page 2000,因为我要一边精简一边写,这样可以完整的记录制作过程,以免有所遗忘。在精简的时候我忽然想起了office的“自我修复”功能。office在启动的时候会进行自我检测,如果检测到缺少文件或键值的时候就会启动自我检测或能,如果利用自我修复功能修复这个随机变化的键,那么制作出的迷你版就可以在任意电脑上运行了。

  在精简注册表的时候删除某个键时会出现下面的对话框:

  然后要求指定安装文件的位置,

指定文件位置以后进行设置

  这个过程是因为在精简的过程中删除的某些键,弄得Front Page 2000注册表不完整,所以程序在启动的时候就会进行自我修复,那为什么在精简以后就不会出现这个对话框呢?我猜测,office除了自我修复以外还有一个自我检测功能,它可以检测自己是否正常安装。精简以后的注册表是程序运行所需要的最少的键,相当于去掉了自我修复功能和自我检测功能,所以它直接启动。

  为了让office可以自动修复Front Page 2000的那个随机变化的键,所以要还给office自我修复功能,但不要给它自我检测功能,因为如何它检测到自己是非正常安装的话,它就不会进行自我修复。这样程序在启动的时候进行自我修复,需要找到安装文件中的data1.msi文件,这时不要把整个安装文件都给它,只把这一个文件给它,因为如果把全部的文件都给它,那么它就相当于全新安装。现在只要它修复那个键就行。所以只给了它这一个文件,

  到这里Front Page 2000已经完精简完了

全文完

超级分析

2005-11-27

  (注,最近单位活比较多,我没有时间在单位写,而在家里又静不下心来,所以这篇写的有些不详细,也没有太多的心思修改,所以暂时就这样发表了。等过些日子单位活少的时候我会把这篇文章修改一下,只是改动一些句子,使表达清楚一点,这篇文章中重要的部分已经全说完了)


文章录入:onegreen    责任编辑:onegreen 
  • 上一篇文章:

  • 下一篇文章:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口


    相 关 信 息
    最 新 文 章
    热点推荐
    最 新 热 门
    最 新 推 荐
    相 关 文 章
    没有相关文章