Der erste Lauf hat NICHTS eingerichtet — weder Auto-Logon noch die
Sperr-Aufgabe. Nachgeprueft: AutoAdminLogon, DefaultUserName und
OilAutoLogonLock allesamt nicht vorhanden.
(1) $ErrorActionPreference = 'Stop' PLUS schtasks /Delete auf eine noch nicht
existierende Aufgabe: native Programme schreiben nach stderr, PowerShell
macht daraus unter 'Stop' einen Abbruch. Das Skript endete, BEVOR /Create
lief. Jetzt wird vorher per /Query geprueft.
(2) Die Erfolgsmeldung log: ein fehlendes DefaultPassword wurde als
"LSA-Secret ✅" ausgegeben — dabei war gar nichts gesetzt, weil der
Autologon-Dialog ohne Enable geschlossen wurde. Abwesenheit eines
Klartext-Passworts beweist nicht, dass der sichere Weg genommen wurde; sie
ist auch mit "nichts passiert" vereinbar. Jetzt ist AutoAdminLogon = 1 die
Bedingung, und erst danach wird ueber die Speicherart geurteilt. Ohne
aktives Auto-Logon bricht das Skript mit Code 1 ab und ueberspringt
Schritt 2.
Dazu ein Design-Fehler, der erst beim Nachdenken auffiel: die Sperre haette bei
JEDER Anmeldung gefeuert — ein ONLOGON-Trigger unterscheidet nicht zwischen
Auto-Logon und manuellem Login. 30 s nach jedem normalen Anmelden waere der
Bildschirm zugefallen. Neu: tools/autologon_lock.ps1 prueft die Systemlaufzeit
und sperrt nur, wenn der Rechner < 3 min laeuft (= Auto-Logon nach Boot).
Trocken getestet: bei 1088 min Laufzeit -> sperrt nicht.
Beide .ps1 mit BOM geschrieben und mit dem echten 5.1-Parser gegengeprueft
(0 Fehler). check_nfalle.py Stufe C2 deckt alle drei Skripte ab.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
20 lines
779 B
PowerShell
20 lines
779 B
PowerShell
# Sperrt den Bildschirm — aber NUR nach einem Auto-Logon, nicht nach einer
|
|
# manuellen Anmeldung.
|
|
#
|
|
# ⚠ WARUM DIE UNTERSCHEIDUNG: ein Task mit ONLOGON-Trigger feuert bei JEDER
|
|
# Anmeldung. Ohne diese Pruefung wuerde der Bildschirm auch 30 s nach jedem
|
|
# normalen Login zufallen — eine taegliche Schikane fuer ein Problem, das nur
|
|
# nach einem unbeaufsichtigten Reboot besteht.
|
|
#
|
|
# Unterscheidungsmerkmal: ein Auto-Logon passiert unmittelbar nach dem Boot.
|
|
# Liegt der Systemstart laenger zurueck, hat sich ein Mensch angemeldet —
|
|
# dann wird nicht gesperrt.
|
|
|
|
$grenzeMin = 3
|
|
$boot = (Get-CimInstance Win32_OperatingSystem).LastBootUpTime
|
|
$seitBootMin = ((Get-Date) - $boot).TotalMinutes
|
|
|
|
if ($seitBootMin -lt $grenzeMin) {
|
|
rundll32.exe user32.dll,LockWorkStation
|
|
}
|