Sunshine 在進行權限提升操作時,會用WTSGetActiveConsoleSessionId來獲取當前的活動會話,找到活動會話中的實際用戶,再從這個用戶來提升權限。

但是當前會話是RDP時,Windows會分配一個nobody用戶,然後給WTSGetActiveConsoleSessionId里返回0。從而後面獲取不到用戶的token。

在這個貼子中,有人提到了遍歷所有的會話,過濾掉不活動的和獲取不到token的會話,從而一找到個實際登錄的用戶。

有了這個修復之後,只要使用物理顯示器登錄一次,或者用Sunshine 中的 Desktop 程序登錄之後,實際串流即可找到正確的用戶來提升權限。

我把它和打包出來的二進制放到了這裡:

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