新版QQ(QQ2007II_Trial)的聊天记录保存分析
前段时间,我的QQ速度反应奇慢,用Fineplus什么的优化也没用,后来发现是因为QQ产生的那个号码文件夹太大了(240多M)才使得反应这么慢,于是准备换个QQ的文件储存位置,优化下QQ。
此版本之前的QQ(不包括代号为蜂鸟的TM2008)聊天记录都是保存在QQ程序文件夹下的qq号文件夹下。而从QQ2007II_Trial开始,腾讯把qq的很多个人文件夹写入的windows的用户账户文件夹里,比如帐户名/My Documents下。腾讯在whatsnew里写到:“优化用户个人文件夹的存储位置”,但是很多人却因此找不到自己qq原来的分组、表情和聊天记录。这里我详细分析下这个新版QQ对聊天记录文件夹和聊天中产生的图片保存的处理。
安装QQ2007II_Trial并第一次登陆一个qq号后,会在以下这些位置有qq号码的信息:(假设qq号为123456,windows xp帐户为Administrator,QQ安装在F:\Program Files\Tencent\QQ2007II_Trial 下)
1、F:\Program Files\Tencent\QQ2007II_Trial\123456 (以前所有的聊天记录都在这里,但现在此文件夹一般为空)
2、F:\Documents and Settings\Administrator\My Documents\QQ Files List\QQ_F_Program Files_Tencent_QQ2007II_Trial\123456 (qq把这个文件夹称之为“个人文件夹”,可以在程序里更改目录)
3、F:\Documents and Settings\Administrator\Application Data\QQ List\QQ_F_Program Files_Tencent_QQ2007II_Trial\123456
4、F:\Documents and Settings\Administrator\My Documents\My QQ Files (此文件夹下并无qq号码信息,但你接收到的所有文件默认储存在这里,可以更改路径,我一般直接改为储存在桌面上)
5、F:\Documents and Settings\Administrator\My Documents\我的视频\123456 (这是你储存视频截图的默认文件夹,可以更改路径)
这里,腾讯用了一个我从未见过的命名文件夹的方式,竟然把安装的路径都写在安装的文件夹名上,就像这里的“QQ_F_Program Files_Tencent_QQ2007II_Trial”,令人匪夷所思,可能有助于以后迁移数据吧。
这些文件夹多吧?没想到现在一个QQ会在这么多的地方产生这么多的隐私信息。以上还只是可能暴露隐私(qq号码)的地方的文件夹,腾讯还在windows账户的其他地方生成了不下5个文件夹。
这似乎是很流氓的做法,但也不能怪腾讯,因为微软是推荐这种开发方法的,把私人信息都保存在账户名下的各个文件夹里,比如My Ducument(我的文档)是存放程序最终产生的私人信息文件的,而Application Data(程序数据)里是存放程序运行过程中产生的数据。按接下来的分析也确实看出来这个QQ是符合这种开发思维的。市场稳定了,腾讯也就敢做出这么大的变动,应该也算是一种大胆的进步吧。
聊天记录的文件没有多大变化,仍然是那个MsgEx.db,而不像TM中搞出一个Msg2.0.db,所以我这里只谈QQ对图片的保存方式。分七种情况:
一、自己发送给别人的截图(我用两个方法测试:1、用新版发送给上一个版本即QQ2007II_Beta2SP1.exe,2、在这个新版里加自己为好友,然后发送):
你第一次截图(用qq自带截图或者printscreen屏幕截图都一样,但如果复制一个图片时就不一样了,另当别论)时,当把图片粘贴在聊天窗口的发送框时,会在F:\Documents and Settings\Administrator\Application Data\QQ List\QQ_F_Program Files_Tencent_QQ2007II_Trial\123456下生成一个SCreen文件夹(退出qq时这个文件夹消失),然后发送给自己的qq号时,就会把这个SCreen文件夹下的bmp文件复制到Temp文件夹(此文件夹不同于SCreen,在qq退出时并不删除自身和以下的文件)下,并且改名了!与此同时,qq的个人文件夹下(我这里是F:\Documents and Settings\Administrator\My Documents\QQ Files List\QQ_F_Program Files_Tencent_QQ2007II_Trial\123456)也会有一个同名的bmp文件,但bmp文件已经被qq处理,大小已经变小,只有几k左右且打开看都是黑的。
再次截图时,SCreen下又会出现一个bmp,再次发送,则temp里的文件被清空,被这个新的bmp代替。所以temp里始终只有最后一次发出的图的那张照片,qq的个人文件夹与第一次截图时的反应一样。同样是生成一个同名的但比较小的bmp文件,查看是黑的,看不了。
这样子难道qq没有保存给自己发送的图片吗?不是的,当你点击“聊天记录”时,qq又在F:\Documents and Settings\Administrator\Application Data\QQ List\QQ_F_Program Files_Tencent_QQ2007II_Trial\123456\Temp 生成你正在查看的那些图片bmp,估计是根据个人文件夹的image里的同名bmp生成的(因为同名嘛),且可以正常打开看,但注意:大小与之前SCreen或者Temp中删除的一样,但文件名是与image里的文件或者说Temp里的文件同名,而不是跟之前SCreen产生的同名。
以上就可以解释这个问题:我之前的一个qq文件夹(F:\Documents and Settings\Administrator\Application Data\QQ List\QQ_Z_QQ_QQ2007II_Trial\123456\Temp)里有17张可查看的未经缩小的bmp,那应该就是最后一次退出qq时查看了一下我发送给自己的聊天记录(都是图片)。
二、别人用QQ发送给你的截图(我用上一个版本即QQ2007II_Beta2SP1.exe发给这个新版测试的):
这种情况比较简单,直接以jpg形式保存在个人文件夹的image下
三、自己发送给自己(在这个新版里加自己为好友,然后发送):
不管新版旧版,这时,肯定是会进行第一个步骤的,即最终只在image里存一个不可直接浏览的bmp文件,这样子你在picasa里就看不到了。但有时又会在image中留下jpg文件,暂不清楚为何有时会留有时又不会留jpg,可能跟网络有关吧。
这样就可以解释这个现象:
发送给自己的图片虽然在聊天记录里都可以看到,但在picasa中只看到几张存在于123456的文件夹下,看来其他的就是不可直接查看的bmp格式了。
四、别人用QQ发送给你的自定义表情(我用上一个版本即QQ2007II_Beta2SP1.exe发给这个新版测试的):
直接以jpg形式保存在个人文件夹的CustomFaceRecv下,如果是gif则可能连文件名也没变就存里面了(没测试)
五、别人用TM发送给你的截图和表情:
不管是截图还是表情,都是保存在F:\Documents and Settings\Administrator\My Documents\QQ Files List\QQ_F_Program Files_Tencent_QQ2007II_Trial\123456\CustomFaceRecv 即个人文件夹的CustomFaceRecv中以jpg格式保存。也就是只要是TM客户端登陆的,即便发的是截图而不是表情,QQ2007II_Trial也识别为表情。只保存在CustomFaceRecv,不保存在image文件夹里。
六、QQ群发送给你的图片(即群里接受的图片):
这种情况比较简单,直接以jpg形式保存在个人文件夹的image下
七、自己发送到QQ群的图片(自己其实也在接受):
为了节省流量考虑,且群里的图片隐私要求就没有单聊的高,所以群里的图片都会先在SCreen里生成bmp的文件,但不会转移到Temp,发送出去后就是直接转换为.jpg(文件名当然也全改了)格式的到个人文件夹的image文件夹下,不会经过temp文件夹。因为最终都清除了SCreen和Temp,所以自己在群里发的和别人在群里发的其实保存的结果是一样的。
结论:
一、F:\Documents and Settings\Administrator\Application Data\QQ List\QQ_F_Program Files_Tencent_QQ2007II_Trial\123456 里并不保存数据,但有时却会遗漏些qq信息(比如退出之前查看了下自己的聊天记录,而聊天记录里有图片)。产生的数据其实都是在程序运行时的(这点符合微软推荐的开发方式),可根据个人文件夹里动态产生,所以这个文件夹应当删除。
二、对自己发送出去的图片并不好管理,一般情况下只能在qq的聊天记录中查看,在picasa中看不到。
三、既然微软推荐,腾讯也配合,而且把所有个人信息都保存在windows的帐户信息下也不难管理,那我还是按默认的方式安装和配置,让qq的号码文件夹资料按上述归档。

1条评论
111 2008-04-13 11:13
能不能说专业点嘛,全是些无用资料
[回复]