Eventlog programmiertechnisch ins *.evt exportieren

Asterix-Ac

Erfahrenes Mitglied
Hallo Leute,

nach zahllosen Googleversuchen bin ich nun doch wieder hier gelandet mit einer kniffligen Sache ...
Ich möchte gerne das ApplicationLog und das SystemLog in die standard *.evt - Dateien exportieren. Ich weiß, dass das über den EventViewer manuell geht. Aber ich möchte das automatisieren und in einen Windows Dienst einpflegen. Diese Dateien werden dann gepackt und per Mail versendet. Doch das Vorhaben hängt nun daran, dass ich keine Ahnung habe, wie man die Logs automatisiert exportieren könnte.

Wie immer bin ich für jeden Vorschlag dankbar. (.NET1.0 / 1.1)

Asterix :confused:
 
Zuletzt bearbeitet:

Nico Graichen

Erfahrenes Mitglied
Hi

Die Logs liegen schon als Evt-Datei im System. Du bräuchtest sie also nur kopieren.
Das auslesen der Dateien ist erheblich komplzierter. Das ganze ist mit WMI möglch mehr dazu ist bei google zu finden
 

Asterix-Ac

Erfahrenes Mitglied
Hallo niggo,

ich habe versucht die evt-Dateien zu kopieren... hat auch geklappt. Doch leider waren sie nicht lesbar. Fehler : Die Dateien waren noch geöffnet und vom System im Gebrauch und daher nicht abgeschlossen. Wenn ich die Datei C:\windows\System32\config\AppEvent.Evt von Ihrem Ursprungsort aus öffne, kann ich sie lesen, kopiere ich sie aber, ist sie nicht mehr lesbar.
Irgend eine Idee ?

Asterix
 

Asterix-Ac

Erfahrenes Mitglied
Hi,

ich habe nun eine Lösung auf der Basis von VBScript(WMI) und .NET gefunden :
Hier die eventlog.vbs-Datei :
Code:
Set objArgs = WScript.Arguments
objBackupAppFile = objArgs(0)
objBackupSysFile = objArgs(1)

strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
 & "{impersonationLevel=impersonate,(Backup)}!\\" & _
 strComputer & "\root\cimv2")
Set colLogFiles = objWMIService.ExecQuery _
 ("SELECT * FROM Win32_NTEventLogFile WHERE LogFileName='Application'")
For Each objLogfile in colLogFiles
 errBackupLog = objLogFile.BackupEventLog(objBackupAppFile)
 If errBackupLog <> 0 Then
 Wscript.Echo "Das Anwendungs-Eventlog konnte nicht gesichert werden."
End If
Next
Set colLogFiles = objWMIService.ExecQuery _
 ("SELECT * FROM Win32_NTEventLogFile WHERE LogFileName='System'")
For Each objLogfile2 in colLogFiles
 errBackupLog = objLogFile2.BackupEventLog(objBackupSysFile)
 If errBackupLog <> 0 Then
 Wscript.Echo "Das System-Eventlog konnte nicht gesichert werden."
End If
Next
Die Datei erwartet 2 Parameter :
1. = Ziel Application Event Datei (Absoluter Pfad)
2. = Ziel System Event Datei (Absoluter Pfad)

Und hier die Methode, um sie aus der .Net Application aufzurufen :
Code:
private void getSystemLogFiles()
		{
			//hier die Ereignisanzeigen Dateien Exportieren
			string destination_path = Environment.GetFolderPath(Environment.SpecialFolder.Personal)+@"\";
			string appFile = "Anwendung.evt";
			string sysFile = "System.evt";
			if(File.Exists(destination_path+appFile))
				File.Delete(destination_path+appFile);
			if(File.Exists(destination_path+sysFile))
				File.Delete(destination_path+sysFile);
			Process pr = new Process();
			pr.StartInfo.FileName = Application.StartupPath+@"\eventlog.vbs";
			pr.StartInfo.Arguments = "\""+destination_path+appFile+"\" \""+destination_path+sysFile+"\"";
			pr.Start();
			pr.WaitForExit();
}

Vielen Dank für Eure Hilfe,

Asterix
 

Neue Beiträge