偶然看到有的同學登錄PC的QQ,發現他有很多QQ,每登錄一個要切換一個,雖然記住了密碼,但還是不方便,於是想通過批處理來實現“一鍵登錄”的功能。以下內容為本文假想,如有雷同,實屬巧合!
具體的實現步驟如下:
(1)首先,查看QQ安裝時的文檔位置(用於保存用戶登錄歷史記錄),我的是:C:\Users\David\Documents\Tencent Files\All Users\QQ;如圖1所示:
圖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\Tencent Files\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" start D:\Progra~1\Tencent\QQ\Bin\qq.exe ping 127.0.0.1 -n 7 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" start D:\Progra~1\Tencent\QQ\Bin\qq.exe ping 127.0.0.1 -n 7 del "C:\Users\David\Documents\Tencent Files\All Users\QQ\History.db" copy "C:\Users\David\Documents\Tencent Files\All Users\QQ\3\History.db" "C:\Users\David\Documents\Tencent Files\All Users\QQ\History.db" start D:\Progra~1\Tencent\QQ\Bin\qq.exe ping 127.0.0.1 -n 7 del /q History.db cls
根據你的QQ所在目錄修改批處理文件中的對應目錄,有幾個QQ同時登錄就有幾段代碼,修改對應的文件夾即可,比如我實驗的是3個,所以就有三段代碼,“ping 127.0.0.1 -n 7”代碼后面的7表示幾秒,可能需要做調整,避免瞬間同時登錄導致History.db文件沒來得及復制發生錯誤;
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)
雙擊運行go.vbs文件,即可實現多個QQ同時登錄;要是你不想雙擊,也可以采用快捷鍵,創建一個go.vbs文件的快捷方式(放在桌面上或者附加到開始菜單),則直接使用快捷鍵(我的是Ctrl+Alt+K)就可以了,例子如下圖4:
圖4 快捷鍵修改
注:
1在批處理文件中只需要操作History.db文件的原因是,另外兩個文件是基於History.db文件動態生成的,因此不用全部操作。
2博文最后提到的快接鍵方式運行,由於vbs是一個腳本文件,無法附加到開始菜單,作者沒有仔細研究。
3批處理文件中每個QQ都附加一段代碼顯得代碼量繁瑣,可以使用類似for循環或者while循環的方式,這里也留給讀者搞定。
本博客與csdn:大衛david為同一作者,歡迎轉載,轉載請注明出處:http://www.cnblogs.com/bestDavid/p/QQLoginMUL.html