Autologon: Rueckfall auf den Direkt-Weg statt Sackgasse
Der Dialog-Weg ist zweimal ohne Ergebnis geblieben, weil er mit ENABLE bestaetigt werden muss. Statt den Nutzer ein drittes Mal tippen zu lassen, bietet das Skript nach einem abgebrochenen Dialog jetzt direkt an, es ohne Dialog zu erledigen (j/n) — die Aktivierung steckt dafuer in einer Funktion, die von beiden Wegen aufgerufen wird. Ausserdem ehrlicher in der Fehlerursache: ein falsches Passwort meldet Autologon nicht zurueck, das Ergebnis sieht dann genauso aus wie ein abgebrochener Dialog. Beides wird jetzt genannt statt nur eines. Mit dem echten 5.1-Parser geprueft, BOM gesetzt, Scan sauber. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
4c8ce18a9f
commit
b35f27541f
@@ -71,8 +71,10 @@ Write-Host "=================================================================="
|
||||
Write-Host " SCHRITT 1 - Auto-Logon aktivieren (verschluesseltes LSA-Secret)"
|
||||
Write-Host "=================================================================="
|
||||
Write-Host " Benutzer: $env:USERNAME Domaene: $env:COMPUTERNAME (lokal)"
|
||||
Write-Host ""
|
||||
if ($Direkt) {
|
||||
# Aktivierung ohne Dialog — als Funktion, damit sie auch als Rueckfall nach
|
||||
# einem abgebrochenen Dialog aufgerufen werden kann (sonst muesste der Nutzer
|
||||
# das Skript ein drittes Mal starten).
|
||||
function Invoke-DirektAktivierung {
|
||||
# ⚠ 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
|
||||
@@ -80,16 +82,22 @@ if ($Direkt) {
|
||||
try {
|
||||
$pw = [Runtime.InteropServices.Marshal]::PtrToStringAuto($bstr)
|
||||
if (-not $pw) {
|
||||
Write-Host " ABBRUCH: kein Passwort eingegeben." -ForegroundColor Red
|
||||
exit 1
|
||||
Write-Host " Kein Passwort eingegeben." -ForegroundColor Red
|
||||
return $false
|
||||
}
|
||||
Write-Host " Aktiviere Auto-Logon ..."
|
||||
$null = & $exe $env:USERNAME $env:COMPUTERNAME $pw /accepteula 2>&1
|
||||
return $true
|
||||
} finally {
|
||||
# Klartext so kurz wie moeglich im Speicher halten
|
||||
[Runtime.InteropServices.Marshal]::ZeroFreeBSTR($bstr)
|
||||
Remove-Variable pw -ErrorAction SilentlyContinue
|
||||
}
|
||||
}
|
||||
|
||||
Write-Host ""
|
||||
if ($Direkt) {
|
||||
if (-not (Invoke-DirektAktivierung)) { exit 1 }
|
||||
} else {
|
||||
Write-Host " Es oeffnet sich gleich der Autologon-Dialog." -ForegroundColor Cyan
|
||||
Write-Host " --> Passwort eintragen und auf ENABLE klicken." -ForegroundColor Cyan
|
||||
@@ -109,17 +117,33 @@ Write-Host ""
|
||||
Write-Host " AutoAdminLogon : $(if ($an) { $an } else { '(nicht gesetzt)' })"
|
||||
Write-Host " DefaultUserName : $(if ($user) { $user } else { '(nicht gesetzt)' })"
|
||||
|
||||
# ⚠ RUECKFALL statt Sackgasse: schlaegt der Dialog-Weg fehl, wird hier direkt
|
||||
# angeboten, es ohne Dialog zu erledigen — sonst muesste das Skript ein drittes
|
||||
# Mal von Hand gestartet werden (real zweimal passiert).
|
||||
if (-not $aktiv -and -not $Direkt) {
|
||||
Write-Host ""
|
||||
Write-Host " ==> Der Dialog wurde ohne 'Enable' geschlossen." -ForegroundColor Yellow
|
||||
$a = Read-Host " Jetzt ohne Dialog erledigen? (j/n)"
|
||||
if ($a -match '^[jJyY]') {
|
||||
if (Invoke-DirektAktivierung) {
|
||||
$an = (Get-ItemProperty -Path $k -Name AutoAdminLogon -EA SilentlyContinue).AutoAdminLogon
|
||||
$user = (Get-ItemProperty -Path $k -Name DefaultUserName -EA SilentlyContinue).DefaultUserName
|
||||
$klartext = (Get-ItemProperty -Path $k -Name DefaultPassword -EA SilentlyContinue).DefaultPassword
|
||||
$aktiv = ($an -eq '1')
|
||||
Write-Host ""
|
||||
Write-Host " AutoAdminLogon : $(if ($an) { $an } else { '(nicht gesetzt)' })"
|
||||
Write-Host " DefaultUserName : $(if ($user) { $user } else { '(nicht gesetzt)' })"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (-not $aktiv) {
|
||||
Write-Host ""
|
||||
Write-Host " ==> AUTO-LOGON IST NICHT AKTIV." -ForegroundColor Yellow
|
||||
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 " Haeufigster Grund: falsches Passwort (Autologon meldet das"
|
||||
Write-Host " nicht zurueck) oder Dialog nicht bestaetigt."
|
||||
Write-Host " Erneut versuchen:" -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."
|
||||
|
||||
Reference in New Issue
Block a user