Programmausführung loggen

Diskutiere Programmausführung loggen im Windows Server 2003 Forum im Bereich Server Systeme; Moin! Hat jemand von Euch einen guten Tipp, wie man recht einfach (und ohne zusätzliche Software) die Ausführung von Programmen mitloggen kann...
K

Knutsen

Threadstarter
Mitglied seit
05.02.2007
Beiträge
10
Moin!

Hat jemand von Euch einen guten Tipp, wie man recht einfach (und ohne zusätzliche Software) die Ausführung von Programmen mitloggen kann? Vielleicht im Eventlog, daß dort im Anwendungsbereich steht "XY wurde gestartet" und "XY wurde beendet".
 
P

PraesidentEvil

Mitglied seit
19.04.2005
Beiträge
1.623
Alter
35
Vermutlich nur, wenn du um das Programm eine Logik baust!
D.h. dass, das Programm durch ein Script zum Beispiel gestartet wird, welches eventvwr Einträge macht und solange läuft, bis das Programm beendet wurde. Finde ich persönlich aber bescheuert!!

Oder mache ein Script welches alle 5 Sekunden deine laufenden Prozesse ausließt....finde ich aber auch bescheuert :D

Vielleicht hat jemand noch eine andere Idee!
 
K

Knutsen

Threadstarter
Mitglied seit
05.02.2007
Beiträge
10
Letztere Lösung würde auch zu einer Flut an Events führen, wenn alle 5 Sekunden Einträge generiert werden. Oder es müsste mehr Logik rein, daß überprüft wird, ob seit dem Starten schon ein Eintrag generiert wurde. Aber das wär mir zu kompliziert. *g*

Hm, scheinbar ist das wohl nicht so einfach mit Windows-Bordmitteln zu schaffen.... zusätzliche Software wäre auch okay, aber die muss ich dann erstmal bei uns auf dem Testserver ausprobieren.
 
P

PraesidentEvil

Mitglied seit
19.04.2005
Beiträge
1.623
Alter
35
Letztere Lösung würde auch zu einer Flut an Events führen, wenn alle 5 Sekunden Einträge generiert werden. Oder es müsste mehr Logik rein, daß überprüft wird, ob seit dem Starten schon ein Eintrag generiert wurde. Aber das wär mir zu kompliziert.
Im Prinzip müssten ja nur die neuen Daten mit den alten verglichen werden und die Delta Daten könntest du mitloggen lassen! Dann wiederum brauchst du auch eine "Friendlyliste" in der alle Prozesse stehen, die dein Script ignorieren soll. Sonst steht dein evenetlog voll mit Meldungen:

Die Anwendung rundll32.exe wurde gestartet
Die Anwendung rundll32.exe wurde beendet
Die Anwendung rundll32.exe wurde gestartet
Die Anwendung rundll32.exe wurde beendet
...
:D
 
K

Knutsen

Threadstarter
Mitglied seit
05.02.2007
Beiträge
10
Mike: Keine Sorge, das genannte Programm hätte ich auch nicht auf einem Server einsetzen wollen. :D Hast Du einen Tipp für ein Monitoring-Programm, das die genannte Aufgabe erfüllt?

Ansonsten komm ich wohl doch nicht um eine kleine Eigenprogrammierung rum...
 
K

Knutsen

Threadstarter
Mitglied seit
05.02.2007
Beiträge
10
Hab mich mal an ein VBS gesetzt, was den Zweck erfüllen soll.... Überwachung der laufenden Prozesse und Meldung bei Starten oder Beenden von Prozessen im Ereignislog.

Was funktioniert: Die Überwachung des Starts von Prozessen verläuft zuverlässig.
Was nicht funktioniert: Beim Beenden von Prozessen wird die Meldung nicht immer gespeichert... ein Bug. Es wird erst beim Starten eines Prozesses nach dem Speichern der Meldung, daß ein Prozess gestartet wurde, die Meldung des zuletzt beendeten Prozesses gespeichert. Wurden davor noch weitere beendet, fallen diese Meldungen unter den Tisch. Hat jemand Muße, sich den Code anzuschauen und ggf. auch anderweitig zu verbessern? ;-)

PS: Das Script braucht eine whitelist.txt im gleichen Verzeichnis. Je Zeile ein Prozess, der nicht überwacht werden soll, also z.B. "svchost.exe" in einer Zeile, in der nächsten dann "taskmgr.exe" usw.

--------------------

Code:
Dim File, strComputer, eRet, processtxt, runallways, run, entry, output

strComputer = "."
Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
set ofso = createobject("Scripting.FileSystemObject")

' Whitelist: Prozesse, die nicht überwacht werden sollen
File = ".\whitelist.txt"
run = 0
runallways = 1

' ProcessArrays zur Berechnung des Deltas zwischen zwei Messungen
Dim ProcessArray()
Redim ProcessArray(0)
Dim TempArray()
Redim TempArray(0)

' Zur Speicherung der Meldungen im Ereignislog
Set objShell = Wscript.CreateObject("Wscript.Shell")

if ofso.fileexists(File) then

	' Whitelist-Einträge einladen	
	Set processtxt = ofso.OpenTextFile(File, 1)
	RA =  processtxt.ReadAll
	GetLine = processtxt.Line   
	processtxt.close
	counter = 0

	sqlAdd = " WHERE Name != " & """" & "Check" & """" 
	Set processtxt = ofso.OpenTextFile(File, 1)
	Do until counter = GetLine
		sqlAdd	= sqlAdd & " AND Name != " & """" & processtxt.ReadLine & """"
		counter = counter + 1
	Loop	
	sql = "Select * from Win32_Process " & sqlAdd	

	' Beginne mit der Prozessüberwachung (Endlosschleife! Überwachung beenden mit Killen von wscript.exe im Task-Manager.)
	Do Until run = 1

		' Prozesse lesen
		Set colProcessList = objWMIService.ExecQuery(sql)

		procCount = 0
		' Alle laufenden Prozesse durchgehen
		For Each objProcess in colProcessList
			' Nachschauen, ob der Prozess neu gestartet wurde
			processAlreadyRunning = false
			For Each entry in ProcessArray
				if objProcess.Name = entry then
					processAlreadyRunning = true
				end if
			Next
			if processAlreadyRunning = false then
				objShell.LogEvent 0, objProcess.Name & " was started..."
			end if

			' Bei zu kleinem Array, erweitern...
			procCount = procCount + 1
			if Ubound(TempArray) < procCount then redim preserve TempArray(procCount)
  			TempArray(procCount) = objProcess.Name
		Next

		' Nachschauen, ob Prozesse seit dem letzten Durchlauf beendet wurden
		For Each entry in ProcessArray
			processStillRunning = false
			' Nachschauen, ob der alte Prozess noch läuft
			For Each oldEntry in TempArray
				if oldEntry = entry then processStillRunning = true
			Next
			if processStillRunning = false then
				objShell.LogEvent 0, entry & " has been ended..."
			end if
		Next
		
		' Neues Prozessarray wird zum alten
		ReDim ProcessArray( Ubound(TempArray) )
		For i = 1 To UBound(TempArray)
			ProcessArray(i) = TempArray(i)
		Next

		' Warte einige (Milli)sekunden bis zum neuen Durchlauf (je nach Prozessorstärke und Wunsch anpassen)
		WScript.sleep 100

		if runallways = 0 then
			run = run + 1
		end if

	Loop
	
else
	wscript.echo "whitelist.txt nicht gefunden"
end if
 
Thema:

Programmausführung loggen

Sucheingaben

ereignisanzeige sehen wann programm zuletzt gestartet wurde

,

windows ereignis anwendung beendet

,

windows Programm beendet eventlog

,
windows logfile gestartete programme
, Programmstarts (protokollieren OR loggen OR logging)

Programmausführung loggen - Ähnliche Themen

  • Ereignisanzeige: Warnung WHEA-Logger ID 17

    Ereignisanzeige: Warnung WHEA-Logger ID 17: Hallo Community, ich habe durch zufälliges Gucken in der Ereignisanzeige festgestellt, dass sehr viele Warnungen (in den letzten 24 Stunden über...
  • Programmausführung wird verweigert

    Programmausführung wird verweigert: "Der Zugriff auf den Pfad C:\ProgrammFiles" wurde verweigert" obwohl ich als Admin angemeldet bin. Die Ausführung gelingt nur, wenn ich im...
  • Programmausführung im Hintergrund mit Windows 8

    Programmausführung im Hintergrund mit Windows 8: Hallo allerseits Ich benutze einen PC mit Windows 8 und möchte z.B. Musik von meiner Festplatte abspielen und gleichzeitig in Excel arbeiten...
  • GELÖST Programmausführung bei ersten Systemstart

    GELÖST Programmausführung bei ersten Systemstart: Hallo, gibt es ein Tool, mit dem man ein Programm einmal pro Tag, jeweils beim ersten Systemstart ausführen lassen kann? Der Aufgabenplaner unter...
  • Programmausführung für Benutzer

    Programmausführung für Benutzer: Hallo, ich möchte gerne für die Benutzer meines Servers die Ausführung aller Programme(exe dateien bzw. andere ausführbare Dateien) verbieten und...
  • Ähnliche Themen

    • Ereignisanzeige: Warnung WHEA-Logger ID 17

      Ereignisanzeige: Warnung WHEA-Logger ID 17: Hallo Community, ich habe durch zufälliges Gucken in der Ereignisanzeige festgestellt, dass sehr viele Warnungen (in den letzten 24 Stunden über...
    • Programmausführung wird verweigert

      Programmausführung wird verweigert: "Der Zugriff auf den Pfad C:\ProgrammFiles" wurde verweigert" obwohl ich als Admin angemeldet bin. Die Ausführung gelingt nur, wenn ich im...
    • Programmausführung im Hintergrund mit Windows 8

      Programmausführung im Hintergrund mit Windows 8: Hallo allerseits Ich benutze einen PC mit Windows 8 und möchte z.B. Musik von meiner Festplatte abspielen und gleichzeitig in Excel arbeiten...
    • GELÖST Programmausführung bei ersten Systemstart

      GELÖST Programmausführung bei ersten Systemstart: Hallo, gibt es ein Tool, mit dem man ein Programm einmal pro Tag, jeweils beim ersten Systemstart ausführen lassen kann? Der Aufgabenplaner unter...
    • Programmausführung für Benutzer

      Programmausführung für Benutzer: Hallo, ich möchte gerne für die Benutzer meines Servers die Ausführung aller Programme(exe dateien bzw. andere ausführbare Dateien) verbieten und...
    Oben