文章中心 -> 软件绿化

文章正文

  最近发现自己总打错字,所以想练习一下。上网找了一些打字软件,暂时觉得五笔打字通还行,弄了一个破解版,顺便精简了一下。这个小软件安装后在一个新系统中启动不了,出现个错误提示,看样子有点像缺少注册表的值吧。

  换了一个98系统,先复制一份系统做备份。然后启动RegSnap(下载 RegSnap v3.0 绿色汉化版  http://www.xdowns.com/soft/174/182/2006/Soft_28770.html ),先扫描一下注册表,正常安装五笔打字通以后再扫描一次,然后把两次快照对比一下,顺便生成一个注册表文件。看了一眼注册表快照的报告新建立了几百个键。安装这么个小软件也建立这么多注册表键,太浪费了。

  假如用RegSnap对照注册表快照生成reg文件时给文件起名为123,软件对比以后会生成两个注册表文件:123Redo和123Undo。文件名带有Redo的就是安装软件以后的注册表,文件名带有Undo的就是安装软件之前的注册表。可能是这样的的,我也不太清楚。我们需要的就是安装软件以后的那个。

  把123Redo复制一份,然后用记事本打开,查找“[”,替找成“[-”,替换时选择“替换全部”(98自带的记事本没有替换功能,我是在网上找到的NotepadEx,这个小软件外观和记事本几乎一样,功能却比视窗自带的记事线强多了。用它替换掉98自带的记事本,非常方便。)保存以后再把这个注册表文件导入注册表。这样就清除了安装软件时写入注册表的所有信息。

  注册表文件中的键名一般为[HKEY_USERS\.DEFAULT\Software]这样的格式。这是添加注册表信息的格式。如果在这一段前面的括号中加上一个“-”变成“[-HKEY_USERS\.DEFAULT\Software]”。这是清除注册表的格式。把这样的注册表文件输入以后,就可以清除这个键下的键值。所以只需要把快照生成的注册表文件中“[”替换成“[-”,再导入的时候就可以清除所有信息。清除信息以后再启动一下软件,又开始报告错误了,看来是清除成功了,下面开始精简注册表文件。

  安装五笔打字通时向系统写入的键全被注册表快照软件收集到123Redo这个文件中,但是这些键有许多都是无用的,有用的可能只有一两个键。现在不知道到底是哪个是有用的,那么就把所有键分成几份分别保存,再分别把分开后的几份分别导入注册表(注册表文件就是特定格式的纯文本文件,就像剪切文字那样把所有内容分为几份保存就行了,注意每个文件的开头必须是REGEDIT4)导入一份就启动一下软件,如果不能运行就说明软件需要的键可能不在这一份中,再导入另一份。如果软件可以启动,就说明需要的键就在刚才导入的那一份中。这时再清除所有安装信息(就是把上文提到的、替换后带有“[-”的那一份注册表文件再导入注册表,就相当于清除了:),然后再把含有软件所需键值的那一份再分为几份,再一份一份的测试。最后查出软件只需要一条键值就可以运行:

REGEDIT4

[HKEY_LOCAL_MACHINE\Software\CLASSES\CLSID\{00000010-0000-0010-8000-00AA006D2EA4}\InprocServer32]
"ThreadingModel"="Apartment"
@="C:\\PROGRAM FILES\\COMMON FILES\\MICROSOFT SHARED\\DAO\\DAO350.DLL"

  上面精简注册表的方法在我以前的文件中多次提到,可能我写的罗索一点或者不容易懂,不好意思了。

  注册表文件精简成功以后再换上一个全新的98试验了一下。把注册表信息导入新系统以后软件还是无法启动。那就有可能在安装时向系统写入了文件。下面就查一下安装软件进向系统写入了什么文件。

  先把系统复制一份(关于备份系统的方法请参照我以前写的一篇文章,http://bbs6.sina.com.cn/cgi-bin/newsoul/soulview.cgi?id=758941&fid=191&postdate=2003-05-02&ver=tree这里不多做介绍)在98系统中安装软件时一般都向system文件夹写文件。把刚才正常安装五笔打字通的个系统的system文件夹打开,把里面的所有文件(不选择文件夹)剪切一下,粘帖到备份的全新系统中的system文件夹中,因为两个文件夹中的内容几乎相同,所以会提示你是否复盖同名文件,这时选择否,就是按着键盘中的alt+n不放,就可以跳过所有同名文件。

  经过上面一步,就把正常安装五笔打字通时向系统写入的文件移动到另一个系统里,但是究竟写的是哪个文件还是不知道。这时不要做别的操作,直接返回正常安装五笔打字通的那个系统的system文件夹,把右侧滚动条接到最文件夹的最底部,按名称排列图标以后在空白处点右键,选择“撤销移动”,这样就会把刚才移动到新系统中的文件再撤回来,自动排列到该文件夹的最后一个文件的后面。这样简单的两步就可以查出安装软件时到底向系统中写入了什么文件。

  这种方法有点麻烦,带是刘静老大介绍的用木马防火墙软件(WINDOWS木马防火墙 绿化精简版  http://www.xdowns.com/soft/8/21/2006/Soft_30409.html )监视向系统写的文件的方法好。但是我这里介绍的是如何不使用任何软件的情况下查出向系统写入文件的方法。以前在我刚接触绿软的时候为这个问题烦恼了好长时间,当时是用眼睛一个文件一个文件找的,汗。。所以想出这个方法以后就总想介绍出来。

  通过上面的方法查出安装时只向系统写入了一个DAO350.DLL。把这个文件复制到现在使用的系统以后,五笔打字通就可以运行了,这就算成功了。

  接下来就是打包的问题。五笔打字通一共需要三个文件夹中的文件,一个是本身的安装目录,一个是系统的system中的文件,另一个是注册表文件指字路径的那个目录。这三个文件可以放在同一个目录中。相关知识可以参照《自制acdsee5.0迷你版》的那篇文章。里面有详细介绍。接下来就是如何解决那个指定目录的键值问题,你可以把它改到一个固定的目录中,这样找新系统时只需要导入注册表的值就可以使用。也可以按照各位老大们介绍的方法写个批入理或inf文件动态的改变路径。这个我还不会:)

by 超级分析

文章来自绿盟(xDowns.com)转载请注明来路。



上一篇文章:[06-04]绿色软件联盟 绿色软件更新 []

相关文章