我有個人、工作兩個微信帳號,按照微信的說法,聊天記錄僅保存在用戶的電腦、手機等設備上,在不同電腦登錄同一個微信帳號後,每台設備上保存的聊天記錄是無法同步的,用起來多少有點不方便。
此前網上流行的一般做法是通過 start 命令同時運行,或搭配使用 UWP + Win32 客戶端來實現微信「多開」,但這兩種方法都會影響微信的自動登錄功能,也無法解決不同電腦上的聊天記錄同步問題。
既然無法做到一台電腦同時登錄兩個微信,那不妨換個思路 —— 兩台電腦分別登錄工作號與個人號,然後將其中一台設備上的微信「投影」到另一台上來,不就實現了「雙開」,並且繞開了聊天記錄同步和自動登錄等問題嗎?
遠程桌面系統大家應該多少都有聽說過,微軟遠程桌面、向日葵、TeamViewer 等工具,所提供的基本都是具備完整桌面連接的遠端操控體驗。我們需要的則是 2009 年微軟在 Windows Server 2008 R2 中推出的,能夠提供近似本地程序使用體驗、貼合「應用投影」需求的 RemoteApp。
前期準備#
設備要求#
RemoteApp 需要一台運行 Windows 系統的電腦充當服務端,且系統版本為 Windows XP ~ 11 專業版、企業版、旗艦版,詳細可參考微軟遠程桌面服務文檔中有關兼容性的介紹。
客戶端的設備可使用 Windows、macOS、Android、iOS 等能夠連接遠程桌面的設備,用於連接 RemoteApp。
網絡環境#
為了保證流暢使用,服務端的上行帶寬建議 ≥10Mbps。因為微軟的遠程桌面沒有伺服器中轉功能,直接將服務端的 3389
端口暴露的風險會比較高,為確保安全性,推薦使用代理隧道網絡,或 Zerotier、TailScale 等工具部署虛擬局域網。此外你也可以為遠程桌面服務配置 SSL 加密,降低非授權訪問的可能性。
學校的內部局域網沒有 IPv6 地址,無法通過公網直接連接到宿舍具備公網 IPv6 地址的電腦,因此我在這裡選用的是 Zerotier 來搭建 Site-to-Site 虛擬局域網,詳細方法可參考《異地網絡遠程訪問指北》等文章,本文不過多介紹。
搭建成功後,我們可以通過 Ping 虛擬局域網的 IP 地址、嘗試連接遠程桌面來測試虛擬網絡是否正常。
開啟遠程桌面服務#
微軟 RemoteApp 功能是基於 RDP 協議(Remote Desktop Protool),我們需要打開服務端上的「遠程桌面」,該功能僅在 Windows XP ~ 11 專業版、企業版、旗艦版上可用,兼容的系統版本可參考微軟遠程桌面服務文檔的介紹。進入設置 - 系統 - 遠程桌面
,開啟遠程桌面功能,隨後點擊遠程桌面用戶
,設置允許登入遠程桌面的用戶。
設置完成後,可以在同一局域網的設備上,嘗試能否連接遠程桌面。還有一點需要留意,非 Server 系列的 Windows 個人版系統只能保留一個活躍連接,即連接了遠程桌面後,已登錄的賬戶會進入鎖屏界面暫停使用。
部署 RemoteApp#
下載與安裝 RemoteApp Tool、Wix Toolset#
RemoteApp Tool 是一款可以在非 Windows Server 系統上創建與管理 RemoteApp 的工具。首先要前往 GitHub 頁面下載 RemoteApp Tool 的安裝包,並將它安裝在服務端上。
如果需要為 RemoteApp 生成 MSI 安裝包,還需要安裝 WiX Toolset 環境。MSI 安裝包的優勢在於在客戶端安裝後,客戶端可以像本地程序一樣,通過開始菜單、桌面的快捷方式來訪問 RemoteApp。
導入程序、修改配置#
安裝完成後,打開 RemoteApp Tool,點擊主界面左下角的 ➕ Add a new RemoteApp
,以微信客戶端為例,在彈出的文件框中選擇 WeChat.exe 的路徑 C:\Program Files (x86)\Tencent\WeChat\WeChat.exe
,隨後設置 RemoteApp 的名稱、圖標、文件關聯,便完成程序的添加。
生成 RDP 文件 / MSI 安裝包#
添加完成後,選中列表裡的 WeChat,點擊主界面右下角 💿 Create Client Connection
生成 RDP 連接文件。配置項分為 6 項 —— Host(伺服器地址)、Options(生成連接文件的類型)、Gateway(遠程桌面連接網關)、File types(文件關聯)、MSI options(生成 MSI 安裝包的相關設置)、Signing(RDP 簽名)。
需要留意的配置項有 Host、Options 兩項 —— Host(伺服器地址)配置項中,需要輸入服務端的 IP 地址,在 RemoteApp Tool(版本:v6.0.0.0)默認服務端的遠程桌面端口為 3389
,如果內網穿透或防火牆設置中開放的遠程桌面端口不是 3389
,需要修改隨後生成的 RDP 連接文件內 full address
配置項。Options 配置項裡可選擇連接文件的生成類型,如 RDP 文件或 MSI 安裝包。
完成設置後,點擊主界面右下角 💿 Create
便可生成 RemoteApp 的連接文件,將 RDP 文件或 MSI 安裝包發送到客戶端後,便可連接 RemoteApp。
RemoteApp 的使用體驗#
在 RemoteApp 的加持下,我可以在辦公電腦上「同時登錄並使用」個人微信與工作微信,且兩邊都使用了 Win32 版客戶端,在小程序、自動登錄這兩方面的使用體驗會比 UWP 版微信更佳。使用 RemoteApp 連接的微信回復消息、水群、摸魚與本地客戶端差別不大,除了文件外,文字、圖片均可在客戶端與服務端之間粘貼。
體驗的過程中,發現 RemoteApp 有著以下幾個問題:如果使用了第三方輸入法(我使用的是搜狗輸入法),客戶端上會同時顯示兩個輸入法狀態欄,無法通過 Win + 空格
快捷鍵切換輸入法,只能關閉或隱藏第三方輸入法的狀態欄。
其次,RemoteApp 的窗口有幾率殘留窗口陰影、顯示光標與實際位置偏移的情況,遇到光標位置偏移,可以先最小化 RemoteApp ,再重新呼出,而窗口殘影,目前沒有發現比較好的解決方法。
對於低帶寬要求的微信,使用比較流暢,體驗過程中沒有出現明顯的卡頓,都市天際線、Adobe Photoshop 等涉及大面積內容變化的應用則對服務端與客戶端的帶寬要求較高。
總的來說,RemoteApp 實現了遠程訪問應用程序,而無需將數據存儲在客戶端中,網絡良好的情況下有著不亞於本地程序的使用體驗。連接 RemoteApp 的客戶端不局限於 Windows 電腦,macOS、iOS、Android 或 Linux 等設備都可通過生成的 RDP 文件連接遠端的 RemoteApp。