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 " SCHRITT 1 - Auto-Logon aktivieren (verschluesseltes LSA-Secret)"
|
||||||
Write-Host "=================================================================="
|
Write-Host "=================================================================="
|
||||||
Write-Host " Benutzer: $env:USERNAME Domaene: $env:COMPUTERNAME (lokal)"
|
Write-Host " Benutzer: $env:USERNAME Domaene: $env:COMPUTERNAME (lokal)"
|
||||||
Write-Host ""
|
# Aktivierung ohne Dialog — als Funktion, damit sie auch als Rueckfall nach
|
||||||
if ($Direkt) {
|
# 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
|
# ⚠ Read-Host -AsSecureString: die Eingabe erscheint nicht auf dem Schirm
|
||||||
# und landet nicht in der PowerShell-History.
|
# und landet nicht in der PowerShell-History.
|
||||||
$sec = Read-Host " Passwort fuer $env:USERNAME (Eingabe bleibt unsichtbar)" -AsSecureString
|
$sec = Read-Host " Passwort fuer $env:USERNAME (Eingabe bleibt unsichtbar)" -AsSecureString
|
||||||
@@ -80,16 +82,22 @@ if ($Direkt) {
|
|||||||
try {
|
try {
|
||||||
$pw = [Runtime.InteropServices.Marshal]::PtrToStringAuto($bstr)
|
$pw = [Runtime.InteropServices.Marshal]::PtrToStringAuto($bstr)
|
||||||
if (-not $pw) {
|
if (-not $pw) {
|
||||||
Write-Host " ABBRUCH: kein Passwort eingegeben." -ForegroundColor Red
|
Write-Host " Kein Passwort eingegeben." -ForegroundColor Red
|
||||||
exit 1
|
return $false
|
||||||
}
|
}
|
||||||
Write-Host " Aktiviere Auto-Logon ..."
|
Write-Host " Aktiviere Auto-Logon ..."
|
||||||
$null = & $exe $env:USERNAME $env:COMPUTERNAME $pw /accepteula 2>&1
|
$null = & $exe $env:USERNAME $env:COMPUTERNAME $pw /accepteula 2>&1
|
||||||
|
return $true
|
||||||
} finally {
|
} finally {
|
||||||
# Klartext so kurz wie moeglich im Speicher halten
|
# Klartext so kurz wie moeglich im Speicher halten
|
||||||
[Runtime.InteropServices.Marshal]::ZeroFreeBSTR($bstr)
|
[Runtime.InteropServices.Marshal]::ZeroFreeBSTR($bstr)
|
||||||
Remove-Variable pw -ErrorAction SilentlyContinue
|
Remove-Variable pw -ErrorAction SilentlyContinue
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Write-Host ""
|
||||||
|
if ($Direkt) {
|
||||||
|
if (-not (Invoke-DirektAktivierung)) { exit 1 }
|
||||||
} else {
|
} else {
|
||||||
Write-Host " Es oeffnet sich gleich der Autologon-Dialog." -ForegroundColor Cyan
|
Write-Host " Es oeffnet sich gleich der Autologon-Dialog." -ForegroundColor Cyan
|
||||||
Write-Host " --> Passwort eintragen und auf ENABLE klicken." -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 " AutoAdminLogon : $(if ($an) { $an } else { '(nicht gesetzt)' })"
|
||||||
Write-Host " DefaultUserName : $(if ($user) { $user } 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) {
|
if (-not $aktiv) {
|
||||||
Write-Host ""
|
Write-Host ""
|
||||||
Write-Host " ==> AUTO-LOGON IST NICHT AKTIV." -ForegroundColor Yellow
|
Write-Host " ==> AUTO-LOGON IST NICHT AKTIV." -ForegroundColor Yellow
|
||||||
if ($Direkt) {
|
Write-Host " Haeufigster Grund: falsches Passwort (Autologon meldet das"
|
||||||
Write-Host " Autologon hat die Angaben nicht uebernommen —"
|
Write-Host " nicht zurueck) oder Dialog nicht bestaetigt."
|
||||||
Write-Host " meist ein falsches Passwort. Nochmal versuchen."
|
Write-Host " Erneut versuchen:" -ForegroundColor Cyan
|
||||||
} else {
|
Write-Host " powershell -ExecutionPolicy Bypass -File tools\autologon_einrichten.ps1 -Direkt" -ForegroundColor Cyan
|
||||||
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 ""
|
||||||
Write-Host " Schritt 2 wird uebersprungen - eine Sperr-Aufgabe ohne"
|
Write-Host " Schritt 2 wird uebersprungen - eine Sperr-Aufgabe ohne"
|
||||||
Write-Host " Auto-Logon waere nur laestig."
|
Write-Host " Auto-Logon waere nur laestig."
|
||||||
|
|||||||
Reference in New Issue
Block a user