Hallo Zusammen,
folgendes Script bekomme ich einfach nicht hin und würde euch bitten, mir mit ein paar Tipps unter die Arme zu greifen. Das Script soll folgendes durchführen können:
1. Mit Windows starten bevor sich der Anwender über das Logon am System (WinXP) anmeldet
2. Das Script soll erkennen, daß das Fenster "Windows Anmeldung" erscheint
3. Es sollte auch erkennen, wenn der Dialog "Willkommen bei Windows" erscheint, der mit Strg-Alt-Entf zu bestätigen ist
4. Der Username des sich anmeldenden Benutzers soll über die Variable @UserName zu ermitteln sein
Hier das Script, was ich bisher habe:
Dim $LogFileHandle = 0
Dim $TimerStart = 0
Dim $VergangeneZeit = 0
Dim $PID = 0
Dim $UserName = ""
Dim $Willkommen = 0
$TimerStart = TimerInit()
$UserName = EnvGet("USERNAME")
$LogFileHandle = FileOpen("c:\systemstart.txt",10)
FileWriteLine($LogFileHandle,@HOUR & ":" & @MIN & ":" & @SEC)
FileWriteLine($LogFileHandle,"Starte nun den Messvorgang fuer den Systemstart ...")
FileWriteLine($LogFileHandle,"Kontrolle Benutzername: " & $UserName)
FileClose($LogFileHandle)
Do
$Willkommen = WinExists("Willkommen bei Windows")
If $Willkommen = 0 Then $Willkommen = WinExists("Windows-Anmeldung")
If $Willkommen > 0 Then
$LogFileHandle = FileOpen("c:\systemstart.txt",1)
FileWriteLine($LogFileHandle,@HOUR & ":" & @MIN & ":" & @SEC)
FileWriteLine($LogFileHandle,"Begruessungsbildschirm gefunden, warte auf Login ...")
If WinWait("Windows-Anmeldung",300) = 0 Then
FileWriteLine($LogFileHandle,@HOUR & ":" & @MIN & ":" & @SEC)
FileWriteLine($LogFileHandle,"TimeOut (5 Min.) beim Suchen des Anmeldedialogs ...")
FileClose($LogFileHandle)
ExitLoop
EndIf
FileWriteLine($LogFileHandle,@HOUR & ":" & @MIN & ":" & @SEC)
FileWriteLine($LogFileHandle,"Logon-Dialog aufgerufen, warte auf Anmeldung ...")
FileClose($LogFileHandle)
EndIf
; 3Sekunden warten ...
Sleep(3000)
$VergangeneZeit = TimerDiff($TimerStart) / 1000
If $VergangeneZeit > 360 Then
$LogFileHandle = FileOpen("c:\systemstart.txt",1)
FileWriteLine($LogFileHandle,@HOUR & ":" & @MIN & ":" & @SEC)
FileWriteLine($LogFileHandle,"TimeOut (6 Min.) beim Suchen des Willkommensbildschirms ...")
FileClose($LogFileHandle)
ExitLoop
EndIf
Until $UserName <> EnvGet("USERNAME")
$UserName = EnvGet("USERNAME")
$LogFileHandle = FileOpen("c:\systemstart.txt",1)
FileWriteLine($LogFileHandle,@HOUR & ":" & @MIN & ":" & @SEC)
FileWriteLine($LogFileHandle,"Angemeldet mit Account: " & $UserName)
Sleep(5000)
FileClose($LogFileHandle)
If @LogonDomain <> "Domaene" Then
$LogFileHandle = FileOpen("c:\systemstart.txt",1)
FileWriteLine($LogFileHandle,@HOUR & ":" & @MIN & ":" & @SEC)
FileWriteLine($LogFileHandle,"Anmeldung erfolgte nicht an FEDMOG ...")
FileClose($LogFileHandle)
EndIf
$LogFileHandle = FileOpen("c:\systemstart.txt",1)
FileWriteLine($LogFileHandle,@HOUR & ":" & @MIN & ":" & @SEC)
FileWriteLine($LogFileHandle,"Nachfolgend gesetzte Umgebungsinformationen:")
FileWriteLine($LogFileHandle,"Username: " & @UserName)
FileWriteLine($LogFileHandle,"Computername: " & @ComputerName)
FileWriteLine($LogFileHandle,"Logon DNS Domain: " & @LogonDNSDomain)
FileWriteLine($LogFileHandle,"Logon Domain: " & @LogonDomain)
FileWriteLine($LogFileHandle,"Logon Server: " & @LogonServer)
FileWriteLine($LogFileHandle,"OS-Version: " & @OSVersion)
FileWriteLine($LogFileHandle,"SP: " & @OSServicePack)
FileWriteLine($LogFileHandle,"Sprache: " & @OSLang)
FileWriteLine($LogFileHandle,"IP-Adresse 1: " & @IPAddress1)
FileWriteLine($LogFileHandle,"IP-Adresse 2: " & @IPAddress2)
FileWriteLine($LogFileHandle,"IP-Adresse 3: " & @IPAddress3)
FileClose($LogFileHandle)
$LogFileHandle = FileOpen("c:\systemstart.txt",1)
ProcessWait("WKix32.EXE",900)
If ProcessExists("WKix32.EXE") = 0 Then
FileWriteLine($LogFileHandle,@HOUR & ":" & @MIN & ":" & @SEC)
FileWriteLine($LogFileHandle,"KIX wurde nach 15 Minuten nicht gefunden, Script endet hier ...")
FileClose($LogFileHandle)
Exit
EndIf
FileWriteLine($LogFileHandle,@HOUR & ":" & @MIN & ":" & @SEC)
FileWriteLine($LogFileHandle,"KIX wurde gestartet ...")
Do
Sleep(2000)
Until ProcessExists("WKix32.EXE") = 0
$VergangeneZeit = TimerDiff($TimerStart) / 1000
FileWriteLine($LogFileHandle,@HOUR & ":" & @MIN & ":" & @SEC)
FileWriteLine($LogFileHandle,"KIX beendet nach " & $VergangeneZeit & " Sekunden ...")
FileWriteLine($LogFileHandle,"Systemstart wurde beendet!")
FileClose($LogFileHandle)
Alles anzeigen
Das Script selber starte ich über den Task-Scheduler von XP "beim Systemstart" mit dem System-Account. Leider erkennt das Script aber weder die oben beschriebenen Logon-Fenster/Dialoge noch den angemeldeten User. Wie kann man das hinbekommen? Muß das AutoIt-Script als kompilierte EXE und als Dienst laufen?
Vorab vielen Dank für eure Hilfe,
viele Grüße
Thomas