前几天写了一个解除微信多开限制的小工具,但是想着这个并不方便,所以就想着有没有办法实现每打开一个窗口时,如果微信已经登录,那就显示另一个账号,如果只有一个账号么就出现扫码界面,理论上是可以实现这样的功能的,所以我就针对这个问题研究了一番。
配置文件
微信配置路径(全局配置)
微信配置文件是整个微信安装后默认的配置文件,默认目录为:
$ %APPDATA%\Tencent\WeChat\All Users\config
目录结构
AppConfig.data -- 应用配置文件,保存某一个文件的哈希值,具体不明;
update.data -- 升级数据文件,空;
wechatApps.data -- 微信应用程序,具体不明;
*.ini -- 此目录只有几个ini文件,文件名随机生成,里面保存着文件管理目录路径等信息。
用户配置路径(用户配置)
用户配置文件是我们每当登录一个微信号后自动生成的配置文件,默认目录为:
$ %USERPROFILE%\Documents\WeChat Files
- 目录结构
WeChat Files -- 文件管理目录
├─All Users -- 公共配置目录
│ └─config -- 配置文件目录
│ c9d52eb5.ini -- 不知
│ config.data -- 设置免扫码配置
...
...
└─wxid_* -- 用户微信目录,每个微信会自动生成一个目录,目录名为初始微信账号。
文件分析
全局配置
全局配置是微信自有配置且不可自定义。
首先我们打开%USERPROFILE%\Documents\WeChat Files
目前的ini文件,看看里面有些什么?
由上面可以看出,有一个配置文件中,只有一个路径,我们通过设置对比可以看出,这个就是微信文件管理目录的一部分,只是少了WeChat Files
,所以,我们写一个实例,读取每一个ini文件内容,取第一行对方特征*:\
(说明:由于这一个目录是可以自定义的,所以我们只能取特征)
用户配置
用户配置文件目录是存放用户聊天记录、接收文件、图片、视频的目录,通常我们如果说清理微信目录时,就是清理该目录下的文件(如果你对微信目录结构不熟悉,请使用专业工具清理或者微信自带的清理工具清理,具体如何清理则在下一篇技术文章中说明。)。
如图所示,在这里我们需要利用到两个重要的目录All Users、wxid_***;All Users目录中的配置文件是对我们所有的微信号都生效的配置目录;以wxid_***
开头的是微信号文件管理目录,而wxid_***
是我们每个微信的初始微信ID号,我们接着往下看,首先看看All Users目录下有些什么?
如图所示,我们可以看到根目录中有很多重复的图片,只是文件名不一样,这是因为权限发生了改变需要重新扫码登录时,登录的头像就会在这个目录中生成一个缓存,所以我们无需要管这些,我们接着看config目录下的内容;图中所示有一个config.data(下文称免扫码文件)、***.ini两个文件,其中***.ini文件名随机生成,对于我们作用不大,我们主要看免扫码文件文件,我们使用文本文件打开,这里我使用扫码登录和自动登录做了一个对比,从这里可以看出,自动登录是在文本中的固定位置插入了一个微信号目录中的一个AccInfo.dat(账号信息)文件,这里包含了微信号以及微信头像信息,其它信息已加密。