Visual Basic.NET - Vaciar registro de eventos de windows

 
Vista:
Imágen de perfil de Ignacio
Val: 84
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

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
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder