批处理文件—多个QQ一键登录

想通过批处理来实现“一键登录”的功能。
具体的实现步骤如下:
(1)首先,查看QQ安装时的文档位置(用于保存用户登录历史记录),我的是:C:\Users\David\Documents\TencentFiles\All Users\QQ;如图1所示:



(2)目录下有三个后缀名为db的文件:
History.db是一个存放所有历史登录记录的表,该表是有序的,第一个记录就是客户端最近一次登录的QQ用户;
Perfre.db则是实际登录的QQ用户,每次打开客户端,都会从History.db中取出第一个记录(即第一个QQ用户)存入Perfre.db并登录,里面保存的是一个用户的信息;
Registry.db保存的应该就是Perfre.db中保存的登录用户的信息,包括QQ头像,登录设置(代理,端口号,自定义图像和好友列表等用户信息),如下图所示:


图2 登录客户端

图3 设置信息窗口

(3)三者的执行顺序简介:在启动QQ.exe应用程序的时候,首先就是加载History.db文件,于是在客户端可以看到我们之前在本地PC所登录的所有历史记录;其次,动态创建Perfre.db文件,从History.db文件取出第一个QQ用户记录信息,保存在Perfre.db文件中;Registry.db文件也是动态生成的,它根据Perfre.db文件中的用户唯一标识符,在Misc文件夹(图1所示)下找到此用户的代理,端口号,自定义图像和好友列表等用户信息,最后登录,后面还要检验密码什么的就不在本博文的研究范围内了。
(4)既然这样,就可以写一个bat批处理脚本来实现多个QQ用户同时登录了,当然,这也是一个一劳永逸的办法,刚开始比较麻烦一点。
  1. 在"C:\Users\David\Documents\TencentFiles\All Users\QQ "文件夹(这里每个人的文件夹可能不一样)分别创建文件夹1、2、3、……(要登录几个QQ就创建几个);
  2. 登录第一个QQ,输入账号密码,勾选自动登录。登录成功后,将History.db文件剪切到文件夹1;
  3. 登录第二个QQ,同上,将History.db文件剪切到文件夹2,依次类推,直到所有登录的QQ所创建的History.db文件都备份好;
    4)在任何地方创建一个QQlogin.bat批处理文件,该脚本代码如下:
del "C:\Users\David\Documents\Tencent Files\All Users\QQ\History.db"
copy "C:\Users\David\Documents\Tencent Files\All Users\QQ\1\History.db" "C:\Users\David\Documents\Tencent Files\All Users\QQ\History.db"

cd C:\Program Files (x86)\Tencent\QQ\Bin
start qq.exe
ping 127.0.0.1 -n 20

del "C:\Users\David\Documents\Tencent Files\All Users\QQ\History.db"
copy "C:\Users\David\Documents\Tencent Files\All Users\QQ\2\History.db" "C:\Users\David\Documents\Tencent Files\All Users\QQ\History.db"

cd C:\Program Files (x86)\Tencent\QQ\Bin
start qq.exe
ping 127.0.0.1 -n 20
 
del /q History.db
cls

根据你的QQ所在目录修改批处理文件中的对应目录,有几个QQ同时登录就有几段代码,修改对应的文件夹即可,比如我实验的是2个,所以就有三段代码;“ping 127.0.0.1 -n 20”代码后面的20表示几秒,可能需要做调整,避免瞬间同时登录导致History.db文件没来得及复制发生错误;

del /f /s /q *.TxT:除了有隐藏属性和系统属性的txt文件外,所有的txt文件都将删除
del /a /s /q *.TxT:除了有只读属性的文件外,所有的txt文件都将删除(包括有隐藏属性和系统属性的txt文件)

DEL [/P] [/F] [/S] [/Q] [/A[[:]attributes]] names
ERASE [/P] [/F] [/S] [/Q] [/A[[:]attributes]] names
del的参数如下:

/P 删除每一个文件之前提示确认。
/F 强制删除只读文件。
/S 从所有子目录删除指定文件。
/Q 安静模式。删除全局通配符时,不要求确认。
/A 根据属性选择要删除的文件。
属性说明:
r 只读
a 存档
s 系统
h 隐藏

  • 前缀表明“非

5)这里已经是完成了原先的目的,但是有一点不足之处就是运行的时候会弹出CMD的黑色窗口;我在这里做个小小的改进,让窗口在后台进行,原有的QQlogin.bat批处理文件不需要做任何修改,仅需要创建一个go.vbs的文件(QQlogin.bat和go.vbs在同一个目录下),文件代码为:

Set shell = Wscript.createobject("wscript.shell")
a = shell.run ("C:\Users\David\Desktop\QQlogin.bat",0) 

这里也需要修改对于那个的bat路径;
双击运行go.vbs文件,即可实现多个QQ同时登录;要是你不想双击,也可以采用快捷键,创建一个go.vbs文件的快捷方式(放在桌面上或者附加到开始菜单),则直接使用快捷键(我的是Ctrl+Alt+K)就可以了


图四:快捷键修改

注:

1在批处理文件中只需要操作History.db文件的原因是,另外两个文件是基于History.db文件动态生成的,因此不用全部操作。

2博文最后提到的快接键方式运行,由于vbs是一个脚本文件,无法附加到开始菜单。

3批处理文件中每个QQ都附加一段代码显得代码量繁琐,可以使用类似for循环或者while循环的方式。

————————————————
版权声明:本文为CSDN博主「大卫david」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/thebestdavid/java/article/details/21946555

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容