Vaciar registro de eventos de windows
Publicado por Ignacio (43 intervenciones) el 18/09/2020 01:52:29
Tengo un sub para hacer backup de los eventos de windows (Application, System, SECURITY) solamente, los demas no me interesan. me funciona bien el Backup, pero al final quiero vaciar esos eventos de mi PC, como se hace con la opcion de Vaciar Registro en el visor de Eventos, pero me salta un error en EventLog.Delete "No se puede eliminar el árbol de subclave porque no existe la subclave." Aca les dejo el codigo para que tengan una idea o me la den, Gracias de antemano
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
Sub procesar(DestServer As String)
Dim objWMIService As Object
Dim colServices As Object
Dim oFSO As Object
Dim remoteEventLogs() As EventLog
Dim strComputer As String = "."
Dim folderName As String = Form1.LabelPC.Text.Trim()
'Create the Time variables
sDate = Year(Today) & "-" & Month(Today) & "-" & Microsoft.VisualBasic.DateAndTime.Day(Today)
Try
'Cantidad de eventos de la PC
remoteEventLogs = EventLog.GetEventLogs(System.Environment.MachineName)
oFSO = CreateObject("Scripting.FileSystemObject")
If Not oFSO.FolderExists(DestServer & folderName) Then
'No existe la carpeta por la tanto la creo .
System.IO.Directory.CreateDirectory(DestServer & folderName)
End If
objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate, (Backup, Security)}!\\" & strComputer & "\root\cimv2")
'This section goes out and gets the hostname this is run on for us.
colServices = objWMIService.ExecQuery("Select * from Win32_NTEventLogFile")
Dim logs As EventLog
Dim elemento As Integer = 1
Dim strHOSTNAME(remoteEventLogs.Count()) As String
'guardo en el arreglo los nombres de los eventos
For Each logs In remoteEventLogs
strHOSTNAME(elemento) = logs.Log
elemento = elemento + 1
Next
'libero eventos
logs.Clear()
logs.Close()
Dim errBackupLog As String
Dim ss As String = ""
Dim errores As String = ""
elemento = 1
'Creo los eventos
Dim hay_error As Boolean = False
For Each objLogfile In colServices
If (strHOSTNAME(elemento).Trim().ToUpper() = "SYSTEM") Or (strHOSTNAME(elemento).Trim().ToUpper() = "APPLICATION") Or (strHOSTNAME(elemento).Trim().ToUpper() = "SECURITY") Then
ss = DestServer.Trim & strHOSTNAME(elemento).Trim() & ".evt"
'
'Si existe el evt lo borro
If System.IO.File.Exists(ss) Then My.Computer.FileSystem.DeleteFile(ss)
'Hago el backup
errBackupLog = objLogfile.BackupEventLog(ss)
If errBackupLog <> "0" Then
hay_error = True
errores = "El backup del registro " & strHOSTNAME(elemento) & " no pudo ser creado."
My.Computer.FileSystem.WriteAllText(camino + "errores.txt", errores & vbCrLf, True)
End If
End If
elemento = elemento + 1
Next
'Aca comienza a compactar los eventos
If Not File.Exists(DestServer.Trim + folderName + "\" + sDate.Trim + ".zip") Then _
comprime(DestServer, "*.evt", DestServer.Trim & folderName + "\" + "Log-" + sDate + ".zip", True)
EventLog.Delete("Application")
(Aqui da el error)
''si hay error envio por correo
If hay_error Then
cargo_notificacion()
If Form2.CheckBox1.Checked = True Then enviar(False)
' borrar_errores()
End If
Catch e As SecurityException
MsgBox("Security Exception:." & e.Message, e.StackTrace)
'Catch ex As Exception
' MsgBox("ERROR. No se genero la salva." & ex.Message, ex.StackTrace)
End Try
End Sub
Valora esta pregunta


0