Defekte RDP-Sitzung mit Bordmitteln und Steam Link reparieren
Defekte Gaming-RDP-Sitzung mit Bordmitteln und Steam Link reparieren
Microsoft stellt mit den Programmen tscon und quser und den Fähigkeiten der in Windows integrierten PowerShell eine Möglichkeit bereit, RDP-Sitzungen zu identifizieren und umzuziehen. In Verbindung mit Steam Link lassen sich damit defekte RDP-Sitzungen für Gaming reparieren.
Anwendungsfall/Fehlerbeschreibung
Anstatt Steam Link zu verwenden, wurde eine lang laufende RDP-Sitzung für ein Idle Game (Tap Ninja) genutzt. Anscheinend führt eine lange Dauer der Anmeldesitzung (teilweise mehrere Tage) ohne einen verbundenen RDP-Client in Verbindung mit der Game Engine dazu, dass das Spiel zwar weiter ausgeführt wird, aber nicht mehr bedienbar ist. Zusätzlich ist nach der Anmeldung mit einem RDP-Client auch die eigentliche Windows-Sitzung nicht mehr richtig zu verwenden.
Das Abschießen der Sitzung oder erzwungene Neustarten des Computers ist nicht erwünscht, da hierdurch ungespeicherter Spielfortschritt verloren ginge.
Ein Wechsel zu Steam Link ist in diesem Fall nicht möglich: Sobald ein Anwender sich via RDP anmeldet, wird auf der Konsolensitzung (die mit Monitor, Maus und Tastatur verbundene Sitzung) der Sperrbildschirm eingeblendet (insbesondere bei Client-Windows-Editionen). Steam Link kann diesen Sperrbildschirm anzeigen, aber nicht durch Anmelden/Entsperren verlassen.
Lösung
Steam Link muss zuvor vollständig eingerichtet sein. Bei Systemen, die sonst Headless betrieben werden, ist hierfür einmalig eine Ausstattung mit Monitor, Maus und Tastatur notwendig, um die Verbindungscodes in der Konsolensitzung eingeben zu können.
Der Workaround besteht aus folgenden Schritten:
- RDP-Sitzung aufbauen
- Startmenü aufrufen (Startmenü ist in der Regel nutzbar)
- Verknüpfung zum Umzug der RDP-Sitzung (mehr dazu siehe unten) aufrufen, auftretende Abfragen und Fehlermeldungen bestätigen
- Via Steam Link mit Computer verbinden
- Mit Alt+Tab zum Spiel wechseln (selten nicht notwendig)
- Spiel beenden
- Steam Link trennen
- RDP-Sitzung aufbauen
- Spiel wieder starten
Verknüpfung zum Umzug der RDP-Sitzung
Es bietet sich an, eine Verknüpfung direkt ins Startmenü zu legen oder an einen anderen Ort, den man mit einer schnellen Suche im Startmenü finden kann.
Das Verknüpfungsziel enthält die folgende Befehlszeile (darunter nochmal in ihre Einzelteile zerlegt) und Ausführen in könnte z.B. auf %PUBLIC%
zeigen, um einen Speicherort für die Fehlerausgabe zu haben.
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -NoProfile -ExecutionPolicy RemoteSigned -Command "$sessionid=((quser $env:USERNAME | select -skip 1) -split '\s+')[2]; tscon $sessionid /dest:console 2> UnlockErrors.log"
Details für Neugierige
In übersichtlich stellt sich die Befehlszeile wie folgt dar:
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
-NoProfile
-ExecutionPolicy RemoteSigned
-Command "
$sessionid=((
quser $env:USERNAME | select -skip 1
) -split '\s+')[2];
tscon $sessionid /dest:console
2> UnlockErrors.log
"
Das Snippet startet eine PowerShell-Instanz und ermittelt mit quser die SessionId der aktuellen RDP-Sitzung. tscon erhält den Auftrag, die so ermittelte Sitzung auf die Konsole umzuziehen. Und weil die Sitzung, die dieses Snippet ausführt, in diesem Moment keinen Sperrbildschirm hat, ist dieser auch nicht mehr auf der Konsolensitzung im Weg.
No Comments