feat: Logon-Trigger für MoonlightTeardown als Fallback nach Shutdown

This commit is contained in:
Andre
2026-04-26 10:56:08 +02:00
parent ca59d41f4b
commit 3bb9b8c7e5
2 changed files with 10 additions and 3 deletions
+9 -2
View File
@@ -22,9 +22,11 @@ Sunshine läuft als Windows-Dienst (Session 0 / SYSTEM-Kontext). `DisplaySwitch.
Zur Kontrolle:
```
schtasks /query /tn MoonlightTeardown /fo list
schtasks /query /tn MoonlightTeardown /fo list /v
```
Unter `Trigger` sollten zwei Einträge erscheinen: `At log on` (Fallback nach Shutdown) und der Task ist zusätzlich jederzeit manuell aufrufbar — beide Mechanismen nutzen dieselbe Aktion.
### 2. Sunshine konfigurieren
In der Sunshine Web-UI unter **Configuration > General**:
@@ -41,11 +43,16 @@ Stream startet
└─> idd_an.bat
└─> DisplaySwitch.exe /external (virtuellen Monitor aktivieren)
Stream endet
Stream endet (normal)
└─> idd_aus.bat [läuft in Session 0]
└─> Start-ScheduledTask 'MoonlightTeardown'
└─> Task Scheduler [InteractiveToken = Benutzersession]
└─> DisplaySwitch.exe /internal (physischen Monitor reaktivieren)
Stream endet durch Shutdown (Fallback)
└─> PC bootet neu → User-Login
└─> MoonlightTeardown [Logon-Trigger]
└─> DisplaySwitch.exe /internal (physischen Monitor reaktivieren)
```
## Voraussetzungen
+1 -1
View File
@@ -9,7 +9,7 @@ if %errorLevel% neq 0 (
REM Angemeldeten Benutzer ermitteln (nicht SYSTEM)
for /f "tokens=*" %%u in ('powershell -NoProfile -Command "(Get-WMIObject Win32_ComputerSystem).Username"') do set CURRENT_USER=%%u
powershell.exe -ExecutionPolicy Bypass -NonInteractive -Command "$action = New-ScheduledTaskAction -Execute 'DisplaySwitch.exe' -Argument '/internal'; $principal = New-ScheduledTaskPrincipal -UserId '%CURRENT_USER%' -LogonType Interactive -RunLevel Highest; $settings = New-ScheduledTaskSettingsSet -MultipleInstances IgnoreNew -ExecutionTimeLimit (New-TimeSpan -Minutes 1); Register-ScheduledTask -TaskName 'MoonlightTeardown' -Action $action -Principal $principal -Settings $settings -Force; Write-Host 'Task MoonlightTeardown erfolgreich registriert.'"
powershell.exe -ExecutionPolicy Bypass -NonInteractive -Command "$action = New-ScheduledTaskAction -Execute 'DisplaySwitch.exe' -Argument '/internal'; $principal = New-ScheduledTaskPrincipal -UserId '%CURRENT_USER%' -LogonType Interactive -RunLevel Highest; $settings = New-ScheduledTaskSettingsSet -MultipleInstances IgnoreNew -ExecutionTimeLimit (New-TimeSpan -Minutes 1); $trigger = New-ScheduledTaskTrigger -AtLogOn -User '%CURRENT_USER%'; Register-ScheduledTask -TaskName 'MoonlightTeardown' -Action $action -Principal $principal -Settings $settings -Trigger $trigger -Force; Write-Host 'Task MoonlightTeardown erfolgreich registriert.'"
echo.
echo Fertig. Dieses Fenster kann geschlossen werden.