Autologon: -Direkt-Weg ohne GUI-Dialog

Der GUI-Weg fuehrte zweimal zu nichts. Diagnostiziert: der Dialog OEFFNET sich
(Fenstertitel 'Autologon - Sysinternals', Prozess verifiziert), muss aber mit
ENABLE bestaetigt werden — nur schliessen tut nichts.

Neu: -Direkt. Autologon 3.10 nimmt Benutzer/Domaene/Passwort als Argumente;
das Skript fragt es per Read-Host -AsSecureString ab (unsichtbar, nicht in der
History) und ruft ohne Dialog auf. Schlaegt es fehl, nennt das Skript jetzt den
wahrscheinlichen Grund je nach Weg (Dialog nicht bestaetigt vs. falsches
Passwort).

Abwaegung dokumentiert: bei -Direkt steht das Passwort fuer den Moment des
Aufrufs in der Kommandozeile des Kindprozesses (fuer Admins kurz sichtbar). Es
landet nicht in einer Datei, nicht in der Shell-History — und anschliessend als
verschluesseltes LSA-Secret statt im Klartext in der Registry.

Mit dem echten 5.1-Parser geprueft (0 Fehler), -Direkt als Parameter erkannt,
BOM gesetzt, n-Falle-Scan sauber.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Axel Hocks
2026-08-07 06:45:54 +02:00
co-authored by Claude Opus 5
parent eccc13f2cf
commit 4c8ce18a9f
2 changed files with 60 additions and 8 deletions
+11
View File
@@ -296,6 +296,17 @@ dort bereits nachvalidiert, ØR +0,305.) **Eine** Oberfläche:
**`AutoAdminLogon = 1` die Bedingung**, und erst danach wird über die
Speicherart geurteilt; ohne aktives Auto-Logon bricht das Skript mit Code 1 ab
und überspringt Schritt 2.
⚠⚠ **Der GUI-Weg führte zweimal zu nichts.** Diagnostiziert: der Dialog
**öffnet sich** (Fenstertitel „Autologon - Sysinternals", Prozess verifiziert)
— er muss aber mit **ENABLE** bestätigt werden; nur schließen tut nichts.
Deshalb gibt es jetzt **`-Direkt`**: Autologon 3.10 nimmt Benutzer/Domäne/
Passwort als Argumente, das Skript fragt es per `Read-Host -AsSecureString` ab
(unsichtbar, nicht in der History) und ruft es ohne Dialog auf.
**`powershell -ExecutionPolicy Bypass -File toolsutologon_einrichten.ps1 -Direkt`**
⚠ Abwägung: bei `-Direkt` steht das Passwort für den Moment des Aufrufs in der
Kommandozeile des Kindprozesses (für Admins kurz sichtbar). Es landet **nicht**
in einer Datei, nicht in der Shell-History — und anschließend als
verschlüsseltes LSA-Secret, nicht im Klartext in der Registry.
**Und ein Design-Fehler: die Sperre hätte bei JEDER Anmeldung gefeuert.** Ein
`ONLOGON`-Trigger unterscheidet nicht. Deshalb prüft `tools/autologon_lock.ps1`
jetzt die **Systemlaufzeit** — gesperrt wird nur, wenn der Rechner **< 3 min**
+49 -8
View File
@@ -33,6 +33,21 @@
# ist `AutoAdminLogon = 1` die Bedingung, und erst danach wird ueberhaupt
# ueber die Speicherart geurteilt.
# AUFRUF-VARIANTEN:
# ... -File tools\autologon_einrichten.ps1 GUI-Dialog (Standard)
# ... -File tools\autologon_einrichten.ps1 -Direkt ohne Dialog, Passwort
# wird hier abgefragt
# ⚠ `-Direkt` ist der zuverlaessige Weg. Der Dialog OEFFNET sich zwar
# (Fenstertitel "Autologon - Sysinternals", verifiziert), muss aber mit ENABLE
# bestaetigt werden — wird er nur geschlossen, passiert nichts.
# ⚠ Abwaegung bei `-Direkt`: Autologon 3.10 nimmt Benutzer/Domaene/Passwort als
# Argumente. Das Passwort steht damit fuer den Moment des Aufrufs in der
# Kommandozeile des Kindprozesses (fuer Administratoren kurz sichtbar). Es wird
# NICHT in eine Datei geschrieben, nicht in die PowerShell-History (Read-Host)
# und landet anschliessend als verschluesseltes LSA-Secret — nicht im Klartext
# in der Registry.
param([switch]$Direkt)
$ErrorActionPreference = 'Stop'
$hier = Split-Path -Parent $MyInvocation.MyCommand.Path
$k = 'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon'
@@ -57,12 +72,32 @@ Write-Host " SCHRITT 1 - Auto-Logon aktivieren (verschluesseltes LSA-Secret)"
Write-Host "=================================================================="
Write-Host " Benutzer: $env:USERNAME Domaene: $env:COMPUTERNAME (lokal)"
Write-Host ""
Write-Host " Es oeffnet sich gleich der Autologon-Dialog." -ForegroundColor Cyan
Write-Host " --> Passwort eintragen und auf ENABLE klicken." -ForegroundColor Cyan
Write-Host " (Wird der Dialog nur geschlossen, passiert NICHTS - das Skript"
Write-Host " sagt es dann auch.)"
Write-Host ""
Start-Process -FilePath $exe -ArgumentList '/accepteula' -Wait
if ($Direkt) {
# ⚠ Read-Host -AsSecureString: die Eingabe erscheint nicht auf dem Schirm
# und landet nicht in der PowerShell-History.
$sec = Read-Host " Passwort fuer $env:USERNAME (Eingabe bleibt unsichtbar)" -AsSecureString
$bstr = [Runtime.InteropServices.Marshal]::SecureStringToBSTR($sec)
try {
$pw = [Runtime.InteropServices.Marshal]::PtrToStringAuto($bstr)
if (-not $pw) {
Write-Host " ABBRUCH: kein Passwort eingegeben." -ForegroundColor Red
exit 1
}
Write-Host " Aktiviere Auto-Logon ..."
$null = & $exe $env:USERNAME $env:COMPUTERNAME $pw /accepteula 2>&1
} finally {
# Klartext so kurz wie moeglich im Speicher halten
[Runtime.InteropServices.Marshal]::ZeroFreeBSTR($bstr)
Remove-Variable pw -ErrorAction SilentlyContinue
}
} else {
Write-Host " Es oeffnet sich gleich der Autologon-Dialog." -ForegroundColor Cyan
Write-Host " --> Passwort eintragen und auf ENABLE klicken." -ForegroundColor Cyan
Write-Host " (Nur schliessen reicht NICHT - dann passiert nichts."
Write-Host " Zuverlaessiger: Skript mit -Direkt aufrufen.)"
Write-Host ""
Start-Process -FilePath $exe -ArgumentList '/accepteula' -Wait
}
# ── Ergebnis ehrlich pruefen ────────────────────────────────────────────
$an = (Get-ItemProperty -Path $k -Name AutoAdminLogon -EA SilentlyContinue).AutoAdminLogon
@@ -77,8 +112,14 @@ Write-Host " DefaultUserName : $(if ($user) { $user } else { '(nicht gesetzt)'
if (-not $aktiv) {
Write-Host ""
Write-Host " ==> AUTO-LOGON IST NICHT AKTIV." -ForegroundColor Yellow
Write-Host " Der Dialog wurde offenbar ohne 'Enable' geschlossen."
Write-Host " Skript einfach erneut aufrufen und auf Enable klicken."
if ($Direkt) {
Write-Host " Autologon hat die Angaben nicht uebernommen —"
Write-Host " meist ein falsches Passwort. Nochmal versuchen."
} else {
Write-Host " Der Dialog wurde ohne 'Enable' geschlossen."
Write-Host " Zuverlaessiger Weg ohne Dialog:" -ForegroundColor Cyan
Write-Host " powershell -ExecutionPolicy Bypass -File tools\autologon_einrichten.ps1 -Direkt" -ForegroundColor Cyan
}
Write-Host ""
Write-Host " Schritt 2 wird uebersprungen - eine Sperr-Aufgabe ohne"
Write-Host " Auto-Logon waere nur laestig."