Moonlight Stream 和 SteamLink 远程串流失败问题解决

本文最后更新于:3 个月前

Moonlight Stream 和 SteamLink 远程串流失败问题解决

问题描述

在使用 Moonlight Stream 或者 SteamLink 进行远程串流时,如果远程 PC 重启,或者被其他设备使用远程桌面 (mstsc, rdp) 登录过,则会出现串流失败的问题:

  • SteamLink: 锁屏界面卡弹窗
  • Moonlight Stream: 远程PC显示感叹号

如下图所示:

steamlink 连接失败

Moonlight 无法连接

其实问题原因是重启或者远程登录都会导致远程 PC 被锁定,串流软件不具备解锁功能,换句话说,串流软件只能在远程 PC 处于解锁状态下才能正常工作。通俗点讲就是你需要在远程 PC 上输入锁屏密码解锁后,才能正常使用串流软件。

但是远程串流的场景大多情况下不具备手动解锁 PC 的条件,所以我们需要一种可以远程解锁的方法来解决这个问题。

解决方案

解决方法非常简单,本质上只需要借助 Windows 自带的一个命令 tscon 来注销当前的远程登录即可,先上代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
@echo off
@REM 获取当前会话的名称
setlocal

@REM 获取对应的会话ID
for /f "tokens=3" %%i in ('query session ^| findstr ">"') do set "sessionid=%%i"
@REM echo %sessionid%
@REM 如果会话ID存在,则关闭对应的会话
if defined sessionid (
@%windir%\System32\tscon.exe %sessionid% /dest:console
) else (
echo No session found for %sessionname%
)
endlocal

注意:鉴于会话 id 是动态的,所以我们需要通过 query session 命令来获取当前所有会话信息,并通过当前会话名称中包含 ‘>’ 字符这一特征匹配来获取当前的会话 id,然后再通过 tscon 命令来关闭对应的会话。

看不懂没关系,按照下面的操作步骤来操作即可:

  1. 手机端使用 RDP 软件登录远程 PC
  2. 在桌面新建记事本,复制上面的代码到记事本中,然后保存为 unlock.bat 文件
  3. 右键 unlock.bat 文件,选择以管理员身份运行,此时会自动注销并退出当前远程连接,这是正常的,如果没有退出,则说明有问题需要检查
  4. 使用手机,平板等设备打开串流软件,连接远程 PC 即可

第三步中,如果远程连接没有退出,则说明注销当前会话失败了,此时仍然无法正常进行远程串流。

题外话

如果你无法通过远程连接来注销会话并解锁 PC,则仍然无法解决问题。如果你想获取更多关于远程连接 PC 的内容,包括如何在公网环境下远程连接家里的 PC 等,可以参考我的另一篇文章,《使用公网IPv6远程访问内网设备》


Moonlight Stream 和 SteamLink 远程串流失败问题解决
https://ccccx159.github.io/2024/02/22/Moonlight Stream 和 SteamLink 远程串流失败问题解决/
作者
Xu@n Ch3n
发布于
2024年2月22日
更新于
2024年2月28日
许可协议