当前位置:操作系统 > 电脑通通透 >>

如何制作迷你软件(二)

答案:
如何制作迷你软件(二)


  上一篇中提到了制作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迷你版中就用了“猜测法”。在查找软件的键值过程中可以把两种方法结合起来,如果对注册表了解的多,可以用“猜测法”,如果对软件不太了解可以用“排除法”来查找。

    (未完也别等了,下一集不知道啥时候能写出来,因为……因为……俺的电脑坏了55555555现在只在用一个133cpu、32M内存的电脑看贴打字,那速度你们想像去吧,5555555短时间没心情写了。)

                                 超级分析
                                 2005-03-11

 

上一个:WinRAR的几个精彩实用技巧
下一个:老当益壮的Copy命令

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,