# Auto-Logon einrichten — schliesst die letzte Luecke der Boot-Pipeline. # # WOZU: `OilTradingServer` und `HyperliquidDashboard` haengen an einem LOGON- # Trigger. Nach einem Windows-Update-Reboot laeuft nichts, bis sich jemand # anmeldet — real in der Nacht zum 2026-07-20 passiert (Reboot 01:30, Server bis # 07:42 tot, nur der broker-seitige SL schuetzte, -95,48 EUR). Ein Task ohne # angemeldete Sitzung hilft NICHT: der Bot braucht das laufende MT5-TERMINAL, # und das ist eine GUI-Anwendung — es braucht eine echte Desktop-Sitzung. # # ⚠⚠ WARUM DIESES SKRIPT UND NICHT DIE REGISTRY. Der verbreitete Weg schreibt # das Passwort als `DefaultPassword` im KLARTEXT nach # HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon — dort kann es # jeder lokale Administrator und jedes Backup-Image lesen. Sysinternals # `Autologon` legt es stattdessen als **verschluesseltes LSA-Secret** ab. Gleiche # Wirkung, deutlich besseres Versteck. Die EXE ist von Microsoft signiert # (geprueft: Status Valid, CN=Microsoft Corporation). # # ⚠ DAS RESTRISIKO BLEIBT und ist NICHT das Passwort: nach dem Reboot steht eine # ANGEMELDETE Sitzung mit offenem MT5 und Live-Broker-Verbindung da. Wer physisch # an den Rechner kommt, sitzt davor. Deshalb sperrt Schritt 2 den Bildschirm # sofort wieder — die Sitzung laeuft (MT5 arbeitet), der Desktop ist zu. # # AUFRUF: dieses Fenster muss ALS ADMINISTRATOR laufen. # powershell -ExecutionPolicy Bypass -File tools\autologon_einrichten.ps1 # # ⚠ Das Passwort steht bewusst NICHT in dieser Datei und wird nirgends # gespeichert — es wird im GUI-Dialog von Autologon eingegeben. $ErrorActionPreference = 'Stop' $id = [Security.Principal.WindowsIdentity]::GetCurrent() if (-not (New-Object Security.Principal.WindowsPrincipal($id)).IsInRole( [Security.Principal.WindowsBuiltInRole]::Administrator)) { Write-Host " ABBRUCH: Dieses Fenster hat keine Administratorrechte." -ForegroundColor Red Write-Host " PowerShell als Administrator oeffnen und erneut aufrufen." exit 1 } $hier = Split-Path -Parent $MyInvocation.MyCommand.Path $exe = Join-Path $hier 'autologon\Autologon64.exe' if (-not (Test-Path $exe)) { $exe = Join-Path $hier 'autologon\Autologon.exe' } if (-not (Test-Path $exe)) { Write-Host " ABBRUCH: Autologon.exe fehlt unter tools\autologon\." -ForegroundColor Red exit 1 } Write-Host "==================================================================" Write-Host " SCHRITT 1 — Auto-Logon aktivieren (verschluesseltes LSA-Secret)" Write-Host "==================================================================" Write-Host " Benutzer : $env:USERNAME" Write-Host " Domaene : $env:COMPUTERNAME (lokales Konto)" Write-Host " Es oeffnet sich der Autologon-Dialog. Passwort dort eintragen" Write-Host " und auf Enable klicken." Start-Process -FilePath $exe -ArgumentList '/accepteula' -Wait # ── Ergebnis pruefen ──────────────────────────────────────────────────── $k = 'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon' $an = (Get-ItemProperty -Path $k -Name AutoAdminLogon -EA SilentlyContinue).AutoAdminLogon $klartext = (Get-ItemProperty -Path $k -Name DefaultPassword -EA SilentlyContinue).DefaultPassword Write-Host "" Write-Host " AutoAdminLogon : $an" if ($klartext) { Write-Host " ⚠ DefaultPassword steht im KLARTEXT in der Registry!" -ForegroundColor Yellow Write-Host " (Autologon sollte das vermeiden — bitte pruefen.)" } else { Write-Host " DefaultPassword : nicht im Klartext ✅ (LSA-Secret)" } # ── Schritt 2: Sitzung sofort sperren ─────────────────────────────────── Write-Host "" Write-Host "==================================================================" Write-Host " SCHRITT 2 — Bildschirm nach dem Auto-Logon sofort sperren" Write-Host "==================================================================" $t = 'OilAutoLogonLock' schtasks /Delete /TN $t /F 2>$null | Out-Null schtasks /Create /TN $t /SC ONLOGON /RU "$env:USERNAME" /DELAY 0000:30 ` /TR "rundll32.exe user32.dll,LockWorkStation" /F | Out-Null Write-Host " Aufgabe '$t' angelegt (30 s nach Anmeldung -> Sperrbildschirm)." Write-Host " Die Sitzung LAEUFT weiter, MT5 und beide Server arbeiten." Write-Host "" Write-Host " Rueckgaengig: $exe /accepteula (Disable) und" Write-Host " schtasks /Delete /TN $t /F"