Prozessüberwachung

  • Moin,

    Dieses kleine Tool soll helfen einen (den eigenen) Computer zu überwachen.

    Es werden beim Start alle laufenden Prozesse erfasst und dann in einem einstellbaren Intervall mit den aktuell laufenden Prozessen verglichen.
    So kann festgestellt werden, ob ein Prozess beendet oder gestartet wurde.

    diese Änderungen können in eine Datei geschrieben werden.
    z.B. wenn man seinen PC mal verlässt um zu sehen, was sich so tut, wenn man abwesend ist,
    oder wenn man wissen will welche seltsamen Prozesse hin und wieder für sehr kurze Zeit aktiv sind, sodass sie normalerweise nicht gefunden werden.

    Getestet auf WinXP (SP3)

    Spoiler anzeigen
    [autoit]


    #include <Array.au3>

    [/autoit] [autoit][/autoit] [autoit]

    _Prozessueberwachung()

    [/autoit] [autoit][/autoit] [autoit]

    Func _Prozessueberwachung()

    [/autoit] [autoit][/autoit] [autoit]

    Local $String, $Liste, $ListeNeu, $Aenderung = False, $Tmp, $Zeit

    [/autoit] [autoit][/autoit] [autoit]

    ;Einstellungen
    Local $Pfad = @ScriptDir & '\Prozesse.txt' ; Dateipfad für die Log Datei
    Local $Geschwindigkeit = 2 ; = Anzahl Durchläufe pro Sekunde
    Local $Logdatei = True ; Soll eine Datei angelegt werden ?
    Local $Konsole = True ; Soll in der Konsole alles aufgelistet werden ?

    [/autoit] [autoit][/autoit] [autoit]

    $Liste = ProcessList()
    $String = '> Prozesse zum Programmstart am ' & @MDAY & '.' & @MON & '.' & @YEAR & ' um ' & @HOUR & ':' & @MIN & ':' & @SEC & ' Uhr' & @CRLF
    $String &= '> Anzahl: ' & $Liste[0][0] & @CRLF
    For $i = 3 To $Liste[0][0] Step 1
    $String &= '+ ' & $Liste[$i][0] & @CRLF
    Next
    $String &= @CRLF

    [/autoit] [autoit][/autoit] [autoit]

    If $Konsole Then ConsoleWrite(@CRLF & $String)

    [/autoit] [autoit][/autoit] [autoit]

    If $Logdatei Then FileWrite($Pfad, $String)
    $String = ''

    [/autoit] [autoit][/autoit] [autoit]

    If $Konsole Then ConsoleWrite('> Prozesse werden ' & $Geschwindigkeit & ' Mal je Sekunde überprüft' & @CRLF & @CRLF)

    [/autoit] [autoit][/autoit] [autoit]

    While Sleep(1000 / $Geschwindigkeit) ;2 Mal jede Sekunde Prozesse überwachen.

    [/autoit] [autoit][/autoit] [autoit]

    $ListeNeu = ProcessList()

    [/autoit] [autoit][/autoit] [autoit]

    If $ListeNeu[0][0] <> $Liste[0][0] Then $Aenderung = True ; Ein Prozess kam hinzu oder wurde beendet ?

    [/autoit] [autoit][/autoit] [autoit]

    If Not $Aenderung Then ; Die Anzahl ist gleich -> Dennoch kann etwas verändert sein.
    For $i = 3 To $ListeNeu[0][0] Step 1
    If $Liste[$i][0] <> $ListeNeu[$i][0] Then $Aenderung = True
    Next
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    If $Aenderung Then

    [/autoit] [autoit][/autoit] [autoit]

    $Zeit = '(' & @HOUR & ':' & @MIN & ':' & @SEC & ') '
    $Tmp = __($ListeNeu, $Liste)

    [/autoit] [autoit][/autoit] [autoit]

    For $e = 0 To UBound($Tmp) - 1 Step 1
    $String &= '+ ' & $Zeit & 'Gestartet: - ' & $Tmp[$e][0] & @CRLF
    $Zeit = ' '
    Next

    [/autoit] [autoit][/autoit] [autoit]

    $Zeit = '(' & @HOUR & ':' & @MIN & ':' & @SEC & ') '
    $Tmp = __($Liste, $ListeNeu)

    [/autoit] [autoit][/autoit] [autoit]

    For $e = 0 To UBound($Tmp) - 1 Step 1
    $String &= '- ' & $Zeit & 'Beendet : - ' & $Tmp[$e][0] & @CRLF
    $Zeit = ' '
    Next

    [/autoit] [autoit][/autoit] [autoit]

    If $Konsole Then ConsoleWrite($String)
    If $Logdatei Then FileWrite($Pfad, $String)

    [/autoit] [autoit][/autoit] [autoit]

    $String = ''
    $Aenderung = False
    $Liste = $ListeNeu

    [/autoit] [autoit][/autoit] [autoit]

    EndIf
    WEnd
    EndFunc ;==>_Prozessueberwachung

    [/autoit] [autoit][/autoit] [autoit]

    Func __($Liste, $ListeNeu) ;Alle Einträge aus der ersten Liste löschen
    Local $a
    For $i = 0 To UBound($ListeNeu) - 1 Step 1
    $a = _ArraySearch($Liste, $ListeNeu[$i][1])
    If $a <> -1 Then _ArrayDelete($Liste, $a)
    Next
    Return $Liste
    EndFunc ;==>__

    [/autoit]

    lg
    Mars(i)