Sunshine 在进行权限提升操作时,会用WTSGetActiveConsoleSessionId来获取当前的活动会话,找到活动会话中的实际用户,再从这个用户来提升权限。

但是当前会话是RDP时,Windows会分配一个nobody用户,然后给WTSGetActiveConsoleSessionId里返回0。从而后面获取不到用户的token。

在这个贴子中,有人提到了遍历所有的会话,过滤掉不活动的和获取不到token的会话,从而一找到个实际登录的用户。

有了这个修复之后,只要使用物理显示器登录一次,或者用Sunshine 中的 Desktop 程序登录之后,实际串流即可找到正确的用户来提升权限。

我把它和打包出来的二进制放到了这里:

https://github.com/fffonion/Sunshine/releases/tag/0.21-fix