[返回首页]
 ◎ 您当前的位置:首页 >> 软件绿化 >> 绿化方法 >> 正文
我经验之谈-制作迷你软件

制作迷你软件一般分为三个步骤:

  1.查找软件所需最少的键值。
  2.查找软件所需最少的文件。
  3.根据使用情况自定义软件的安装位置,打包。

  制作迷你软件不需要太深的知识,只要对电脑有一定的了解就行,最好有自己的电脑,经常安装系统和应用程序,知道基本的文件类型,会简单的处理注册表和注册表文件。有了这些就可以自己制作迷你软件了,最好是对程序和注册表有一定的了解,这样可以我使查找工作简单一些,不过即使对这些懂得不多也可以学习着制作的,我就是从不懂开始的,而且没有人教我,关键是动脑筋,举一返三。在这里我介绍一下制作迷你软件的经验,方法很简单,很落后,希望高手们不要笑话。

  一、如何查找软件所需最少的键值。

  这里所说的查找,是指着那些大型的软件,有些软件如:Acdsee2.4和超级兔子2002,这类软件只需要只需要一两个注册信息的键就可启动,在正常安装时,在输入完注册码以后把注册码记下来,然后打开注册表,在里面搜索一下,一般会找到刚才输入的注册码,然后把找到的键保存出来就行。下次换系统的时候无需安装,直接把注册信息导入新系统就行。

  一般软件的注册信息都保存在[HKEY_LOCAL_MACHINE\SOFTWARE\]这个键下,在这个键中会有和程序名相同的子键,注册信息就保存在其中。至于什么软件是这种只需要一个注册信息的软件在制作之前很难看出来。只能猜测。

  我制作的第一个迷你软件是Word97,是office97办公软件中的一个。这个程序不需要注册表的键也可以正常运行,但是每次启动的时候都会出现错误报告,正常安装时则没有这个错误报告。我就把正常安装后的系统的注册表全部导出来,再把这些信息导放到一个新系统中,这时软件启动的时候就没有错误报告了。这样一来我就知道了,这个软件只需要注册表中的键值就不会出现错误提示。但是到底需要哪个键值还不知道。所以我又返回正常安装的系统,把注册表的六个根键分别导出来。这样就可当于把整个注册表信息分成六份。然后我又找上一个新系统,再把六个根键的信息分别导入新系统,当我把第一个根键的信息导入新系统以后,软件启动时就不再报错,这说明软件所需要的键就在第一根键中。

  面对一个陌生的软件,不知道它究竟需要哪个键,就用这种方法去猜测,上面的例子只用了一次就查出来,所需要的键值在第一根键中。这样虽然不知道具体是哪个键,但是它缩小了寻找的范围。接下来在这个根键中寻找。这种方法虽然笨了点,但它还是很有用的。

  第一根键中有成千上万个子键,直接找实在是找不过来。当时我的知识少,看到这么多的键,当时就放弃了,以为自己没有能力找出来,一直到一年多以后才又开始查找它。

  我用的方法是很简单的,我不知道它需要什么键,也不知道所要的键在哪里,但是我知道它就在第一根键中,所以,我把第一根键手工分成三份,然后把中间的一份导入一个新系统,启动软件的时候还报错,再把第三份导入系统,这回软件就可以正常启动,这说明软件所需要的键有可能在第三份中,也有可能在第二和第三份中,所以我又找一个新系统,把第三份导入到系统中,软件启动时还报错,我再把第二份导放系统中,软件就可以正常启动,这说明软件需要的键在第二份和第三份中,第一份是没有用的,就把第一份扔掉。

  通过上面的这一步,我还是不知道软件所需的键在哪里,但是我知道它在第一根键的中间和结尾部分,通过上面一步,我把查找范围缩小了三分之一,然后再用同样的方法,把这两份各自分成三份,共六份注册表键值。然后再换上一套新系统,再分别把它们导入。如果导入四个“部分”后可以正常启动word,就说明所需键值在这四份中,另两份是没有用的,这样又把查找的范围缩小了,然后再分,再导……通过这种方法,一点一点的缩小范围,剩下的我虽然不知道它在哪里,但是一定在其中,为了查找软件所需要的键值,我换了近二十多个系统,重启了几十次电脑,最后在几千几万个键值中找到软件所需要的最少的键值。

  上面的过程不知道您看懂没有,没有技巧,全是猜的,一点一点的缩小范围。我就是用这种:“排除法”来查找键值的,每次查找一个软件都要换掉好几个系统。我也知道这种方法麻烦,写出这些的时候我也脸红过,但是我没有更多的方法,也不会运用软件,那时我只是个初学者,这种方法不需要对注册表了解太多,只要有些基本常识就够了。我就是用这种最笨的方法制作了word2000迷你版和FrontPageXP迷你版,




制作word97时用“排除法”来查找键值,主要是想告诉初学者:即使对电脑和注册表了解不多,也照样可以自己制作迷你软件。不过这种方法用起来实在是麻烦,如果现在再来查找Word97的键,会有更好的方法。不过,“排除法”用起来虽然麻烦,但是它还是相当有用的。比如说拿到一个软件时,不知道它是否可以制作出迷你版,那就先用“排除法”判断一下。先导出安装后的注册表信息,把注册表的所有键值全导入新系统,如果软件能启动就说明这个软件可以制作出迷你版。在后再分别把六个根键的信息导入注册表,这样可以判断出软件需要哪个键,可以进一步缩小查找的范围。

  在进一步查找的过程中,如果不想再用这种“排除法”,那就要多掌握一些关于注册表方面的知识,和软件在注册表中的规律。这里再介绍一种“猜测法”

  一般的软件都会在[HKEY_LOCAL_MACHINE\Software]下面建立一个和自己公司名相同的子键,需要的注册信息保存在这里,大多数软件只需要这个键下的注册信息就可以启动,(汗一下,我一共才做过几个迷你软件,居然敢说“大多数软件”,汗,不过在这方面的确是要根据简单的几个去判断大多数的规律的,),但是有些软件虽然可以*这几个键值启动,但是功能却不完整。这是因为在[HKEY_LOCAL_MACHINE\Software\CLASSES]缺少相关的键值。如Acdsee5.0缺少下面的这三个键,在启动的时候就会报告无法找到数据库:

[HKEY_LOCAL_MACHINE\Software\CLASSES\CLSID\{1BF48485-D8A7-4B74-98B6-251E885C701A}\InprocServer32]

@="C:\\Program Files\\ACD Systems\\5.0\\IDBSvrps.dll"
"ThreadingModel"="Both"

[HKEY_LOCAL_MACHINE\Software\CLASSES\CLSID\{E87A29B4-7738-4642-BACC-C85C1D9E7042}\LocalServer32]

@="C:\\Program Files\\ACD Systems\\5.0\\IDBSVR.EXE"

[HKEY_LOCAL_MACHINE\Software\CLASSES\Interface\{1BF48485-D8A7-4B74-98B6-251E885C701A}\ProxyStubClsid32]
@="{1BF48485-D8A7-4B74-98B6-251E885C701A}"

  虽然功能正常,但是这个错误报告很烦人,而且心理上不习惯,只要补上这三个键,acdsee5.0的功能就会正常。那么,从上面这一段中就可以得出两个查找键值的规律。

  软件必须依*[HKEY_LOCAL_MACHINE\Software\CLASSES\CLSID]下面的键指定软件的安装路径,那么反过来我们可以通过软件的安装路径来查找软件所需要的键值。例如上例中Acdsee5.0安装在C:\Program Files\ACD Systems\5.0目录中,在地址栏中记下路径信息,然后打开注册表找到[HKEY_LOCAL_MACHINE\Software\CLASSES\CLSID]这个键,用查找功能查找Acdsee的安装路径,当然,找到的键值会有很多个,这些并不全是软件所需要的,所以还要用“猜测法”去掉多余的键。把找到的键先导出保存为注册表文件,然后再删掉这个键,然后启动一下程序,如果程序可以启动,那就说明这个键是不需要的,再去搜索,如果删掉这个键,程序启却不了,或者启动时报错,那就说明这个键是必须要有的,就把刚才保存的注册表文件再导入注册表中,再搜索其它的键,直到找完clsid中所有的键,再把找到的键值合到一起。

  单是clsid还不够,软件还需要其它的信息,仔细注意一下上面的三个键,在clsid中的键的主键名都是带有一串字符的串,这些定符串是什么意思我也不懂,但是根据上面的三个键来看,除了clsid下的键以外,还需要在classes键下的其它键值,而且这个键的主键名和clsid键下的键名相同,所以,第一步是根据路径查找clsid下的键,接下来在找到的clsid键中再按主键名在classes键下寻找其它的键。找到以后再用“猜测法”猜测。就是先保存此键,再删掉它,再启动程序,看看程序是否可以正常运行,最后把找到的所有键合到一起,再换上个新系统测试。这种方法比“排除法”简单一些,也是我常用的方法之一。

  软件所需要的键值多数分布在在calsses中的
[HKEY_LOCAL_MACHINE\Software\CLASSES\CLSID]
[HKEY_LOCAL_MACHINE\Software\CLASSES\Typelib]
[HKEY_LOCAL_MACHINE\Software\CLASSES\Interface]

  这三个键下,具体什么用的我也不懂,只知道在这里有重要的东西。软件的复杂性不同,在classes键中的数量也不同,但和软件的大小无关。比如说Acdsee5.0只需要calsses下的三个键,但是Acdsee5.0自带的FotoCanvas2。0却需要上百个键。这就需要一定的耐性来查找了。

  大多数软件都可以用上面的规律查找出所需键值,但是Office却不行,因为它是微软自己出的办公软件,对系统修改得太多,所以需要的键值也多,查找起来相当费工夫。开始不了解它的时候我用排除法查找了Word2000和FrontPageXP两个软件的迷你版,通过查找这两个软件,我对Office的大概规律了解一些,所以后来的AccessXP迷你版中就用了“猜测法”。在查找软件的键值过程中可以把两种方法结合起来,如果对注册表了解的多,可以用“猜测法”,如果对软件不太了解可以用“排除法”来查找。

[返回上一页] [打 印]
最新文章 热点文章 相关信息
·五笔打字通精简过程
·学习强大的Regsvr32命令
·软件绿化(八):绿化 CorelDRAW 全过
·拆解大软件中的小“宝贝”
·“Front Page 2003 迷你版”的制作方
·我经验之谈-制作迷你软件
·如何制作迷你软件(一)
·软件绿化(九):如何处理磁盘序列号
·软件绿化(一):移花接木法
·软件绿化(十):谈谈绿化补丁的智能
·软件绿化(四):如何制作只带一个运
·绿色word/excel同时运行的实现