利用 RemoteApp 「花式实现」微信双开

我有个人、工作两个微信账号，按照微信的说法，聊天记录仅保存在用户的电脑、手机等设备上，在不同电脑登录同一个微信账号后，每台设备上保存的聊天记录是无法同步的，用起来多少有点不方便。

此前网上流行的一般做法是通过 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。