EXE电子书与垃圾

来源:百度文库 编辑:神马文学网 时间:2024/04/28 14:30:17
作者:马健
邮箱:stronghorse@tom.com主页:http://stronghorse.yeah.net
目前EXE格式的电子书在网络上比较流行,制作工具五花八门,eBook Workshop和eBook Edit Pro是其中比较流行的两个。但是又有多少人知道,在你打开用它们制作的电子书的时候,其实它们已经在你的系统中悄悄产生了一些垃圾,包括注册表项、文件等。而且目前没有一个制作软件提供垃圾清除手段,典型的“管杀不管埋”作风。
在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开头的随机文件名,避免产生文件冲突。
但是不论是这两种工具中的哪一种,在退出电子书的时候,都不会删除自己建立的临时文件,造成垃圾。
三、解决之道
解决电子书垃圾的办法有以下几种:
电子书制作工具的作者升级自己的产品,起码在正常退出电子书的时候,可以将自己在注册表、临时目录中建立的东西删除掉。 第三方制作专门的批量垃圾清理工具。有志在软件业发展的同学,可以借此练习一下自己对注册表和文件的操作。不过调试的时候千万注意,如果不能在虚拟机下调试,请先用Ghost做好备份,免得一失足成千古恨。如果觉得自己开发太麻烦,也可以用我开发的小工具eBookRegClean,纯免费。 彻底抛弃EXE格式的电子书,这个才是王道。我个人一贯认为,原始的HTML文件格式就很好,支持直接从ZIP/RAR中浏览HTML文件的软件也早就有了,实在没有必要生成EXE,占用空间不说,还会产生垃圾、感染病毒木马、消耗文件列表时间、不能进行批量全文检索,等等,实在得不偿失。