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 variablessDate = Year(Today) & "-" & Month(Today) & "-" & Microsoft.VisualBasic.DateAndTime.Day(Today)
Try
'Cantidad de eventos de la PCremoteEventLogs = 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 = 1Dim strHOSTNAME(remoteEventLogs.Count()) As String
'guardo en el arreglo los nombres de los eventosFor Each logs In remoteEventLogs
strHOSTNAME(elemento) = logs.Log
elemento = elemento + 1
Next
'libero eventoslogs.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 = FalseFor 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 borroIf System.IO.File.Exists(ss) Then My.Computer.FileSystem.DeleteFile(ss)
'Hago el backuperrBackupLog = objLogfile.BackupEventLog(ss)
If errBackupLog <> "0" Then
hay_error = Trueerrores = "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 eventosIf 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 correoIf 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
