- Offizieller Beitrag
Hi,
ich habe ein Tool geschrieben um AutoAdminLogon zu aktivieren/ deaktivieren.
Dann brauch ich da nicht jedes mal bei unseren Kunden von Hand zu fummeln.
Für meine Zwecke reichts ja, ich hätte es aber gern allgemeingültig geschrieben und dazu benötige ich eine Möglichkeit herauszufinden, welche der Benutzerkonten Admin und welche Eingeschränkt sind.
Dann würde ich auch nur diese in der Userliste aufführen, da AutoAdminLogon, wie der Name sagt, nur für Adminkonten funktioniert.
Also, wenn da jemand 'ne Idee hat - immer her damit.
(AutoAdminLogon sollte aber niemals auf 'nem PC mit Internetzugang und/oder LAN-Zugehörigkeit verwendet werden. - Denn das PW wird im Klartext gespeichert in der Registry. Wenn die dann nicht gut eingetütet ist....)
Hier das Script:
Spoiler anzeigen
#cs ----------------------------------------------------------------------------
[/autoit] [autoit][/autoit] [autoit]AutoIt Version: 3.2.1.14 (beta)
Author: BugFix ( [email='bugfix@autoit.de'][/email] )
Script Function: AutoAdminLogon aktivieren / deaktivieren
#ce ----------------------------------------------------------------------------
#include <GUIConstants.au3>
#include <array.au3>
#Include <GuiList.au3>
Dim $LogonKey = "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon"
Dim $AllUserKey = "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList"
Dim $CurrDefUser = RegRead($LogonKey, "DefaultUserName"), $AllUsers = ""
Dim $arUsers, $CurrAutologonUser, $User
If RegRead($LogonKey, "AutoAdminLogon") = "" Or RegRead($LogonKey, "AutoAdminLogon") = 0 Then
$CurrAutologonUser = "kein Konto"
Else
$CurrAutologonUser = $CurrDefUser
EndIf
$Form1 = GUICreate("Auto Login festlegen / aufheben", 263, 224, -1, -1)
$Input1 = GUICtrlCreateInput("", 124, 140, 133, 21, BitOR($ES_AUTOHSCROLL,$ES_READONLY))
$Button1 = GUICtrlCreateButton("Auto Login aufheben", 6, 169, 250, 21, 0)
$Button2 = GUICtrlCreateButton("Auto Login für markiertes Konto festlegen", 6, 196, 250, 21, 0)
$Group1 = GUICtrlCreateGroup("Benutzerkonten auf diesem PC", 6, 10, 250, 125)
$List1 = GUICtrlCreateList("", 15, 28, 233, 102)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Label1 = GUICtrlCreateLabel("Auto Login besteht für:", 6, 143, 111, 17)
GUISetState(@SW_SHOW)
For $i= 1 to 20 ; Benutzerkonten auslesen
$var = RegEnumKey($AllUserKey, $i)
If @error <> 0 then ExitLoop
$tmp = RegRead($AllUserKey & "\" & $var, "ProfileImagePath")
$str = StringRight($tmp, StringLen($tmp) - StringInStr($tmp, "\", 1, -1))
If $str <> "systemprofile" And $str <> "LocalService" And $str <> "NetworkService" Then
If $AllUsers = "" Then
$AllUsers &= $str
Else
$AllUsers &= "|" & $str
EndIf
EndIf
Next
$arUsers = StringSplit($AllUsers, "|")
For $i = 1 To $arUsers[0] ; Benutzer in Liste eintragen
_GUICtrlListAddItem($List1, $arUsers[$i])
Next
_MarkDefUser($CurrDefUser)
GUICtrlSetData($Input1, $CurrAutologonUser) ; Kontoname eintragen, falls AutoLogon bereits besteht
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $Button1
_AutoOFF()
Case $Button2
_AutoON()
EndSwitch
WEnd
Func _MarkDefUser($tmpUser)
If $tmpUser <> "" Then ; DefaultUser markieren
For $i = 0 To _GUICtrlListCount($List1) - 1
If $tmpUser = _GUICtrlListGetText($List1, $i) Then
_GUICtrlListSelectIndex($List1, $i)
ExitLoop
EndIf
Next
EndIf
EndFunc
Func _AutoON()
$User = _GUICtrlListGetText($List1, _GUICtrlListGetCaretIndex($List1))
If MsgBox(262180, 'Auto Logon setzen', 'Soll für den Benutzer: ' & $User & @LF & _
"das automatische Einloggen aktiviert werden?" & @LF & _
"(Hinweis: Nur für Benutzer mit Administratorrechten möglich.)" ) = 6 Then
RegWrite($LogonKey, "DefaultUserName", "REG_SZ", $User)
RegWrite($LogonKey, "DefaultPassword", "REG_SZ", InputBox("Passwort", "Bitte Passwort für: " & $User & " eingeben." _
& @LF & "Falls der Nutzer kein Passwort hat - frei lassen.", "", "*" ))
RegWrite($LogonKey, "AutoAdminLogon", "REG_SZ", 1)
RegWrite($LogonKey, "ForceAutoLogon", "REG_SZ", 1)
_CheckRegEntry()
EndIf
EndFunc
Func _AutoOFF()
RegWrite($LogonKey, "AutoAdminLogon", "REG_SZ", 0)
If @error <> 0 Then
MsgBox(262160, 'Auto Logon', "Vorgang fehlgeschlagen.")
Else
RegWrite($LogonKey, "DefaultPassword", "REG_SZ", "")
RegWrite($LogonKey, "ForceAutoLogon", "REG_SZ", 0)
GUICtrlSetData($Input1, "kein Konto")
MsgBox(262208, 'Auto Logon', "Auto Logon wurde erfolgreich deaktiviert.")
EndIf
EndFunc
Func _CheckRegEntry()
If RegRead($LogonKey, "AutoAdminLogon") = 1 And RegRead($LogonKey, "ForceAutoLogon") = 1 Then
MsgBox(262208, 'Auto Logon', "Das automatische Einloggen für: " & RegRead($LogonKey, "DefaultUserName") _
& " wurde erfolgreich eingerichtet.")
GUICtrlSetData($Input1, $User)
_MarkDefUser($User)
Else
MsgBox(262160, 'Auto Logon', "Vorgang fehlgeschlagen.")
EndIf
EndFunc