星期三, 四月 18, 2007

EXE电子书与垃圾

作者:马健
邮箱:stronghorse@tom.com
主页:http://stronghorse.yeah.net

目前EXE格式的电子书在网络上比较流行,制作工具五花八门,eBook Workshop和eBook Edit Pro是其中比较流行的两个。但是又有多少人知道,在你打开用它们制作的电子书的时候,其实它们已经在你的系统中悄悄产生了一些垃圾,包括注册表项、文件 等。而且目前没有一个制作软件提供垃圾清除手段,典型的“管杀不管埋”。

http://www.comicer.com/stronghorse/software/
在EXE格式的电子书反编译技术没有取得突破以前,这种垃圾对电子书收藏者来说是一种被迫接受的负担:只要你还想看电子书,它就会一直存在,删不完的。但 是在解决了反编译技术以后,这种垃圾就成了不可容忍的存在:反编译完成以后,EXE格式的电子书已经没有存在的价值,但是EXE文件好删,它留下的垃圾可 不好清理。

一、注册表中的垃圾

打开一个用eBook Workshop制作的EXE电子书(假设文件名为“荡寇志.exe”),然后退出。运行regedit,即可看到下面这一项: HKEY_CLASSES_ROOT\荡寇志.MyNSHandler。这个项下面只有一个CLSID项,其默认值为{E8CFC029-8420- 4EAE-ADEF-915BDC77E1DC}。搜索这个CLSID,可以发现在它下面有LocalServer32、ProgID两个项。

以后每次当你打开一本用eBook Workshop制作的EXE电子书,都会生成一个名为“电子书主文件名.MyNSHandler”的项。

而打开用eBook Edit Pro制作的电子书,其垃圾数是eBook Workshop的两倍:会在HKEY_CLASSES_ROOT下产生一个名为“电子书主文件名.eBookNSHandler”,和一个名为“电子书 主文件名.ExternalNSHandler”的项。

NSHandler这个名字应该是Namespace Handler的简称,也就是这两个电子书制作工具内部使用的技术的名称。

在互联网上,常见的应用层协议包括http、FTP等。出于种种原因,微软允许用户在标准的应用层协议之外,扩展自己的协议,称为 Asynchronous Pluggable Protocol。Asynchronous Pluggable Protocol可以指定对所有进程有效,这个在注册表的HKEY_CLASSES_ROOT\PROTOCOLS\Handler下注册一下就好(包括 CHM、Web Compiler等);也可以指定只在某个进程内有效,以增加保密性,不过这个时候微软就不叫它Asynchronous Pluggable Protocol了,而是Pluggable Namespace Handler。

如果电子书使用了加密功能,要求用户输入用户名、密码才能看书,那么在注册表还会留下更多的垃圾,有兴趣的到这里看:

HKEY_CURRENT_USER\Software\Ada99\eBook workshop\Security

二、文件垃圾

eBook Workshop和eBook Edit Pro在处理背景音乐、Flash动画的时候,都不能直接在内存中支持,必须将文件写到临时目录。对于Windows 2000/XP,这个临时目录在
C:\Documents and Settings\当前登录用户名\Local Settings\Temp
目录下。

eBook Edit Pro比较直接,生成的临时文件名就是链接中的文件名,如music.mid、pic.swf。这种方式虽然简单,但是如果同时打开多本电子书,而其中含有同名的背景音乐或Flash动画,则可能产生文件冲突。

eBook Workshop做得更聪明一点:生成的文件名是以data开头的随机文件名,避免产生文件冲突。

但是不论是这两种工具中的哪一种,在退出电子书的时候,都不会删除自己建立的临时文件,造成垃圾。

三、解决之道

解决电子书垃圾的办法有以下几种:

  1. 电子书制作工具的作者升级自己的产品,起码在正常退出电子书的时候,可以将自己在注册表、临时目录中建立的东西删除掉。
  2. 第三方制作专门的批量垃圾清理工具。有志在软件业发展的同学,可以借此练习一下自己对注册表和文件的操作。不过调试的时候千万注意,如果不能在虚拟机下调试,请先用Ghost做好备份,免得一失足成千古恨。如果觉得自己开发太麻烦,也可以用我开发的小工具eBookRegClean,纯免费。
  3. 彻 底抛弃EXE格式的电子书,这个才是王道。我个人一贯认为,原始的HTML文件格式就很好,支持直接从ZIP/RAR中浏览HTML文件的软件也早就有 了,实在没有必要生成EXE,占用空间不说,还会产生垃圾、感染病毒木马、消耗文件列表时间、不能进行批量全文检索,等等,实在得不偿失。

0 评论: