Sunshine 与 RDP(Windows 远程桌面)配合的多用户多开串流方案
0. 摘要
本方案使用 Sunshine 官方版以及 RDP(Windows 远程桌面)实现了多开游戏互不影响,相当于电脑分身的效果。
具体流程如下:
- 安装并配置
Sunshine - 使用
RDPWrap修改RDP服务以解除多用户连接限制 - 创建一个新用户以供
RDP会话 - 在主用户下使用本地连接到新用户,以创建一个远程桌面
- 创建一个
Sunshine副本,配置新端口 - 在新用户下打开
Sunshine副本,并使用相关客户端连接 - 使用特制客户端保活
RDP会话,降低性能占用,同时可自定义分辨率和缩放大小
1. 资源准备
PC 所需工具&文件
- Sunshine (Github)
- RDPWrap (Github)
- rdpwrap.ini (Github)
- RDP-KeepAlive (Github)
- ExHyperV(Github,可选,切换系统版本需要)
- UACSkip(Github,可选,较推荐,用于跳过UAC)
Tip: Sunshine 不推荐使用“基地版”,因为基地版会不断尝试创建虚拟显示器。
客户端所需 APP
- Moonlight 或其衍生出的改版(推荐阿西西:Android(Github) / iOS($2.99 App Store 美区))
- Windows App(各大应用商店下载)
2. 基础环境配置
RDP 连接限制解除
由于消费者版本(家庭版、专业版等)的 RDP 具有连接限制,无法进行多会话,故需要进行解除。有两种方案,根据需要选择。
方案一:安装 RDPWrap 解除
修改策略组
参考 Windows 10/11 多用户同时远程登录 - 知乎 进行修改。
安装 RDPWrap
由于上文的参考链接已给出具体方法,这里就简要说明一下:
- 下载 RDPWrap-v1.6.2.zip
- 将其解压至一个文件夹,管理员运行
install.bat - 下载最新版的 rdpwrap.ini,用它替换掉
C:\Program Files\RDP Wrapper\rdpwrap.ini
Tip: 安装完毕后需要重启电脑,只重启服务貌似无法生效。
运行 RDPConf.exe,若显示全部绿色,则配置成功。运行 RDPCheck.exe 并忽略安全警告,出现登录界面表明能够正常使用了。
Tip: 若出现
Not Supported字样,可尝试去项目的 Issues 中查找匹配你系统版本(运行winver可查看系统内部版本)的配置,并将其附加到上述rdpwrap.ini文件中。日后若因 Windows 更新而再次失效,可重复此操作。若想避免 Windows 更新,请参考Windows 10/Windows 11 延期100年更新,注意会同时关闭驱动更新。
方案二:切换系统为 Server 版本
注意: 该方案未经实际验证可行性,但对连接体验有所改善。由于设备限制,无法验证该方案是否能够抛弃 RDPWrap。
方案一在实际使用过程(Win 11 23H2)中会出现一个比较烦人的问题:如果使用“RDP 保活工具”(下文有提到),远程音频会在连接后 5 分钟内原地消失,这就不得不用到这个邪门方案对付这个邪门 BUG。
切换消费级系统版本
首先要切换到专业工作站版本,这是切换到 Server 版本的前置条件。
可以直接使用很多人使用过的一键激活脚本(MAS)进行切换。
- 右键
Windows 徽标,选择Windows PowerShell(管理员)运行:
1 | irm https://get.activated.win | iex |
- 等待初始化完成,进入主界面,选择
Change Windows Edition(例如我这里输入6) - 再次等待初始化,选择
ProfessionalWorkstation,输入1进行转换 - 转换后会自动重启,若进入设置后显示未激活,则继续以下步骤
- 再次执行步骤
1运行脚本,选择HWID - 耐心等待激活完毕,出现
Success就可以关闭了。若出现错误就再重试几次,一般可以成功。
Tip: 国内部分地区可能会有较严重的 DNS 污染或网络阻断,部分操作可能无法顺利进行,建议修改 DNS 或使用代理工具。
切换为 Server 版本
这里有一个项目 ExHyperV,虽与该教程关系不大,但是里面有一个很方便的功能:一键切换系统为服务器版本(黑魔法)。
- 安装并打开软件,跳过初始化(?)
- 主页进入
主机配置,下滑打开切换系统为服务器版本 - 重启电脑,并按照Z极客-把服务器版 Windows 装在家用电脑上,日常使用的体验如何?视频中的改造方法进行配置(部分配置可跳过)
注意: 切换系统为服务器版本可能会导致部分功能不稳定,包括但不限于掉驱动(现象如花屏等)。本人 RTX 4060 未曾出现过该现象。
已知特性: 切换后 Wi-Fi 无法在任务栏中进行切换,需要进入设置。
创建用户
- Win + R 打开运行,输入
lusrmgr.msc并回车。 - 进入用户列表,空白处右键-新用户,输入一个用户名和密码,创建。
- 双击刚刚创建好的用户,转到“隶属于”选项卡,点击
添加→高级→立即查找,双击(电脑名)\Administrators,然后确定。 - 可以关闭创建用户的窗口了。然后在开始菜单中点击用户头像,选择刚刚创建的用户,等待用户初始化完成后,再回到主用户。
Tip 1: 首次进入可能会弹出用户体验计划,建议全部取消。如果自动全屏打开
Edge,可使用Alt + F4关闭。
Tip 2: 若你不需要用户密码,则可打开
gpedit.msc,转到计算机配置-Windows 设置-安全设置-本地策略-安全选项,滚动到最下面,找到帐户: 使用空密码的本地帐户只允许进行控制台登录,勾选已禁用。创建用户时取消勾选“下次更改密码”,再勾选“密码永不过期”即可(注意:请确保你的计算机处于内网环境且无陌生人连接,该设置非常危险,不推荐用于便携式设备,特别是在公共网络连接的情况下)。
修改 RDP 帧率
参考 基于 Windows 的远程会话中的帧速率限制为 30 FPS - Microsoft Learn 进行修改。
需要注意的是,修改数据时不要选择十六进制,应选择十进制。DWMFRAMEINTERVAL 实际意义是每帧刷新所需的时间间隔,单位为毫秒。换算公式为:时间间隔 = 1000 ÷ 帧率。
以下为快速对照表:
| 帧率 (fps) | 时间间隔(十进制,毫秒) |
|---|---|
| 240 | 4 |
| 144 | 7 |
| 120 | 8 |
| 60 | 16 |
| 30 | 33 |
3. 连接环境准备
Sunshine 配对
- 检查后台是否有 Sunshine 或相关服务运行,若有则退出。
- 使用任意
RDP客户端连接到副用户(本地 IP 使用127.0.0.2)。 - 在该用户下使用管理员权限打开 Sunshine,进入管理后台配置密码(一定要记住!)。
- 使用
Moonlight连接到 PC,若是第一次连接,将会提示输入 PIN 码,在 PC 端后台 PIN 码输入页里输入即可(新版还要输设备名,若为空随便填即可)。
Tip 1: 若遇到连接不上的情况,在排除网络和 IP(同一网络环境)问题后,可以尝试删除原先保存的电脑,再次添加新电脑。
Tip 2: 官方
Moonlight不支持后台配对,建议使用阿西西版本,如果你使用移动端(Windows App)进行远程桌面的话。
Tip 3: 连接本地会话若出现
无法连接到另一个控制台会话错误,可尝试将127.0.0.2最后一个数字改为更高的值(3-255);若出现连接超时,则检查 IP 输入是否正确;若出现访问拒绝,则检查密码是否正确;若正确则尝试重启 RDP 服务。若你使用的是RDPWrap方案,请运行RDPWrap中的uninstall.bat进行卸载操作,再次重启服务,卸载后可以连接上了,说明是配置文件有问题或者新系统不兼容,则请耐心等待社区兼容。
远程桌面会话保活
这是本教程的关键,没有 Windows 提供的多用户创建远程桌面会话功能,该方案永远不可能出现。
为了创建虚拟桌面,必须有客户端连接到会话,因此需要可靠稳定的远程会话保活方案。这里依旧有两种方案。
第一种使用同会话自连接保活,兼容性好,较为方便,但会占用额外内存和显卡资源;第二种只适配了 Windows 11,而且在部分情况下存在 BUG 和设备缩放功能缺失。
方案一:同会话自连接保活
这里直接使用 Windows 自带的 远程桌面连接 作为客户端。
这里有一段曲折的历史:在该方案之前我尝试过主用户直接连接,发现最小化即断开显示(会话并未断开连接但注销了远程虚拟桌面,导致 Sunshine 无法捕获到任何视频输出),于是将窗口拖至另外一个桌面实现“隐藏”。为了解决性能占用,我尝试过挂起进程,发现会持续不断地在缓冲区堆积大量帧占用内存,过一段时间就会降低会话帧率甚至关闭显示,于是只好不挂起。还有一个问题,主用户要使用的话,一个远程桌面窗口可以随时被偷窥,这样干坏事不就一下子就不被发现了吗(于是我发现在副用户里,使用管理员运行远程桌面连接,也可以“我连接我自己”,实现自我保活,主用户完全看不出异常,并且发现了一些微软可能从未设想过的 BUG,连我自己都觉得这歪门邪道是不是有点太“邪门”了)。
接下来就是具体教程:
- 使用任意
RDP客户端连接到副用户。 - 在副用户中打开
远程桌面连接,输入本地 IP127.0.0.2,输入副用户的账号密码,连接。 - 此时最开始的客户端显示断开连接,使用
Moonlight连接(初次较慢,可重试几次)。 - 出现画面,就大功告成了。
Tip 1: 不要最小化
远程桌面连接。为了让远程连接窗口不那么碍眼,最简单的方式就是把它拖至其他桌面。按Win + TAB进入多任务视图,创建一个桌面,把远程连接窗口拖进去,这样就可以在窗口活动的情况下隐藏掉了。
Tip 2: 该状态下不要随手运行需要管理员的程序,至于原因后文说明。
Tip 3: 复制粘贴将会出现 BUG 而无法使用,虚拟键盘使用复制粘贴快捷键会直接导致卡死。解决方法是任务栏右键打开任务管理器,找到
rdpclip.exe和rdpinput.exe并一一结束进程,便可立即恢复。
Tip 4: 可使用
远程桌面连接的更多选项 → 另存为创建一个 .rdp 文件方便连接,然后创建 .bat 脚本,内容为mstsc.exe "你创建的.rdp" /v:127.0.0.2 /w:1920 /h:1080,其中/w:1920 /h:1080可设置为你想要的分辨率。然后通过UACSkip工具创建一个 bat 快捷方式,放到桌面,在串流时运行即可一键切换分辨率(切换时需要等待一段时间给Sunshine反应),然后关闭旧会话即可。
Tip 5: 在该状态下大概率会遇到音频撕裂现象,解决方法是音频调整菜单里展开
音量合成器,并将远程桌面连接静音即可(也许可通过修改 .rdp 配置文件直接静音,但未找到相关配置说明)。
方案二:RDP 保活工具
使用微软官方的 RDP 客户端连接时,最小化或断开连接,即使是挂起长期不活动,都会导致虚拟桌面显示销毁,从而使 Moonlight 无法获取到画面而断开连接。
但是还有个问题,远程桌面连接 会消耗性能资源,无时无刻渲染显然是个累赘,特别是画面变化快时,客户端服务端同时渲染,显然会占用很多性能。
这时候就需要一个纯净没有任何“额外”功能的客户端来解决该问题。
于是我让 AI 使用 FreeRDP 项目编写一个 RDP 保活工具,能在不渲染任何画面的情况下连接并创建一个持续连接的远程虚拟桌面。
具体使用方法如下:
- 下载
RDP-KeepAlive并解压至一个文件夹。 - 在该文件夹创建一个 .bat 脚本,内容如下:
1 | rdp-keepalive.exe /v:127.0.0.2 /u:账户名 /p:账户密码 /size:1920x1080 /no-render /cert-ignore |
其中 1920x1080 可替换为你想要的分辨率。
- 创建快捷方式到桌面,运行即可保活,此时最开始的客户端断开连接。
- 使用
Moonlight连接,稍等片刻出现画面后即大功告成。
注意: 明文密码是极其不安全的,但上传版本目前只能明文密码使用。实际上最新版已修改为创建密码文件供连接使用,但尚未上传至 Github。
Tip 1: 正如上文所提到的远程音频设备的 BUG,在特定系统环境下一段时间后音频设备会原地消失,重启
Windows Audio服务或一段时间后又会原地出现,但无论怎样音频设备无法持续保活,服务器版本该问题消失。
Tip 2: 由于技术问题或者
FreeRDP项目本身的问题,缩放并非实际有效,只有桌面缩放生效但设备缩放无效,原因未知。
Tip 3: 在 Windows 11 下编译,实测 Windows 10 下 OpenSSL 依赖出现问题而无法正常使用。
4. Sunshine 多开
PC 端设置
首先关闭所有 Sunshine 进程,将 Sunshine 创建一个副本(包含配置文件),打开新副本中的 config\sunshine.conf 文件,追加以下内容:
1 | port = 47990 |
其中 47990 每创建一个副本应在原端口号基础上 +1,每个远程桌面用对应副本运行即可。
Tip: 在配对时,后台端口号应该是在新端口号的基础上 +1,例如新端口号为
47990,那么后台地址为https://localhost:47991/。
客户端连接
使用客户端连接时会自动扫描,理论上会出现多个一样的电脑,部分第三方客户端可以显示端口号,连接对应端口号即可。若没有扫描到,可手动用 IP 添加,注意应在后面加上端口号,例如 192.168.1.4:47990。
Tip: 若无法连接(或只出现一个电脑),则可能是部分程序占用了部分端口,设置一个新端口号再次进行尝试即可。
5. 连接后注意事项
UAC 问题
由于在资源管理器中运行的 Sunshine 只有管理员权限,无法捕获到 UAC 界面(仅 SYSTEM 特权可捕获画面),运行带管理员权限的应用就会黑屏卡死无法继续操作。此时需要使用之前的远程桌面连接窗口(需解除挂起状态)进行手动确认,因此建议使用任务管理器(文件 → 运行新任务,勾选 以系统管理权限创建此任务)打开此类程序,防止因 UAC 界面卡死。
触屏反馈显示问题
由于 Windows 11 的触屏优化问题,虽在触屏设置中默认关闭触屏反馈,单击无显示但是右键仍有方块反馈显示,不仅影响视觉并且会导致部分情况(如突然断线)出现右键方块反馈显示“焊死”在屏幕上的情况,只能重新创建远程会话解决。为避免该情况,可在连接后进入 控制面板 → 小图标 → 触控和笔 → 显示直观反馈,先 开启 → 应用,再 关闭 → 应用,以关闭右键方块显示(仅单次会话有效)。
小窗触控随机画面鬼畜问题
在 Windows 11 下,当以小窗模式下进行游戏时,会随机出现画面鬼畜现象,最小化然后切换回来即恢复,推测与 Windows 11 的手势冲突有关。
长期开机导致的内存泄漏问题
- 远程桌面连接
如果使用 远程桌面连接 作为 RDP 客户端,那么长期连接时会导致帧缓存堆积然后内存占用居高不下(200-500MB),保活工具由于没有渲染画面故从根本上解决了这一问题。
- 远程桌面服务
在 Windows 11 环境下长期运行超过 7 天以上,远程桌面服务(Remote Desktop Services,在任务管理器中显示为TermService)很有可能会出现内存泄漏,正常情况的占用为10MB以下,如果出现占用1G+那么很有可能已经出现了内存泄漏,此后会持续增加直到吃满你的虚拟内存为止。解决办法就是手动重启服务,然后重新创建远程桌面连接(你之前的东西都还在,这点不用担心)。
- 其他
在 Windows 11 中,很多其他程序也存在一定的泄漏,例如资源管理器,所以一般建议每一周重启一次。
系统及设备环境问题
如果你使用的是 Windows 10,那么远程会话创建后不要断开连接后再次登录使用,尽量是第一次连接后再打开 Sunshine,因为实测发现 Sunshine 在 RDP 环境下仍存在问题,会导致在第二次或多次连接后无法正常获取显示器配置(能检测到 RDP 的虚拟显示器但无法正常使用)。不太确定是否完全与系统版本有关,与 A 卡或许也有关系。而在 Windows 11 配 RTX 显卡下使用也会小概率出现问题,不过出现问题与解码器无关,可能是自动查找绑定的显示桌面出现问题,一般重启 Sunshine 即可解决。
若配置正确,第一次运行日志如下:
1 | [2026-05-04 23:09:26.320]: Error: [code: 2, message: 系统找不到指定的文件。] "RegQueryValueExW" failed when getting size. |
注意看,有一个显示设备,显示设备名为 DISPLAY1。若是别的更高数值,则大概率你已经多次远程桌面断开重连了。重复报错未能获取分辨率可以忽略,不影响使用。
在某些系统或显卡下,可能会出现异常状态,相关日志如下:
1 | [2026-05-04 23:16:05.746]: Info: Will compute new display device topology from ... |
报错与解码器有关,猜测是显卡未能绑定至虚拟桌面所致。此后一段时间 Sunshine 会直接崩溃,并且重新运行后仍出现相同报错。
解决办法很简单:注销,然后重新连接,再以管理员运行 Sunshine 即可。
说些什么吧!