Introduzione
In certi contesti, può essere necessaria di scrivere nel visualizzatore eventi di Windows, permettendo in questo modo, di fornire informazioni o errori , sul nostro software.
Il visualizzatore eventi, permette diverse criticità dei messaggi, ossia di tipo avvertimento, informazione, errore.
Vedremo in questo articolo, come leggere, scrivere e cancellare valori nel registro, il tutto come mostrato in figura 1
Figura 1
Dopo aver creato un nuovo progetto di tipo windows application, inserite tre pulsanti.
Il primo pulsante, impostate le proprietà text e name, con Visualizza e btnVisualizza.
nell'evento click del pulsante, inseriremo il codice per la lettura dei valori in una determinata origine, di una certa chiave, ossia di un certo nome registro.
Qui di seguito si riporta il codice di tale operazioni
VB.Net
Private Sub BtnVisualizza_Click(sender As System.Object, e As System.EventArgs) Handles BtnVisualizza.Click
Dim Evento As New EventLog("Application", ".")
For Each elemento As EventLogEntry In Evento.Entries
If elemento.Source = "NomeOrigine" Then
If elemento.EntryType = EventLogEntryType.Error Then
MessageBox.Show("Errore: " + elemento.Message)
End If
End If
Next
End Sub
C#
private void BtnVisualizza_Click(object sender, EventArgs e)
{
EventLog Evento = new EventLog("Application", ".");
foreach (EventLogEntry elemento in Evento.Entries)
{
if (elemento.Source == "NomeOrigine")
{
if (elemento.EntryType == EventLogEntryType.Error)
{
MessageBox.Show("Errore: " + elemento.Message);
}
}
}
}
Tramite la classe Eventlog, dello spazio dei nomi System.Diagnostics, si rilevano tutti i valori del nome registro che si chiamano "application", il punto indica la macchina locale, volendo possiamo impostare anche il nome di una macchina remota.
Nel ciclo for, vengono elecanti tutti i valori, che hanno come origine uguale a "NomeOrigine" e che siano di tipo errore.
Il codice qui di seguito, illustra una tecnica di come scrivere nel registro eventi, creando un nome registro e un nome origine.
VB.Net
'Verifico se esiste la chiave e la creao
If EventLog.Exists("MiaChiave", ".") <> False Then
EventLog.CreateEventSource("Origine", "MiaChiave")
End If
'oggettorelativo alla chiave ed origine
Dim evento As New EventLog("MiaChiave")
evento.Source = "Origine"
'scrito il testo
evento.WriteEntry("Solo Testo")
evento.WriteEntry("Testo errore", EventLogEntryType.Error)
evento.WriteEntry("Testo warning", EventLogEntryType.Warning)
C#
//Verifico se esiste la chiave e la creao
if (!EventLog.Exists("MiaChiave", "."))
EventLog.CreateEventSource("Origine", "MiaChiave");
//oggettorelativo alla chiave ed origine
EventLog evento = new EventLog("MiaChiave");
evento.Source = "Origine";
//scrito il testo
evento.WriteEntry("Solo Testo");
evento.WriteEntry("Testo errore", EventLogEntryType.Error);
evento.WriteEntry("Testo warning", EventLogEntryType.Warning);
Tramite il metodo Exists della classe EventLog, verifichiamo se le chiavi sono presenti, altrimenti, si creano tramite il metodo CreateEventSource.
Dopo aver creato un oggetto di tipo EventLog, tramite il metodo WriteEntry, impostiamo il testo ed il tipo di informazione (Errore, information e warning)
A questo punto non ci resta che scrivere il codice, di cancellazione sia dei dati che della chiave.
Riportiamo qui di seguito il codice da applicare al pulsante Elimina, per la cancellazione delle voci di registro e delle news.
VB.Net
Private Sub BtnElimina_Click(sender As System.Object, e As System.EventArgs) Handles BtnElimina.Click
Try
'Verifico se esiste la chiave o esco
If EventLog.Exists("MiaChiave", ".") <> True Then Return
'oggetto relativo alla chiave ed origine
Dim evento As New EventLog("MiaChiave")
evento.Source = "Origine"
'elimino tutte le informazioni
evento.Clear()
'elimino la chiave
EventLog.Delete("MiaChiave")
Catch ex As Exception
MessageBox.Show("Errore: " + ex.Message)
End Try
End Sub
C#
private void BtnElimina_Click(object sender, EventArgs e)
{
try
{
//Verifico se esiste la chiave o esco
if (!EventLog.Exists("MiaChiave", "."))
return;
//oggetto relativo alla chiave ed origine
EventLog evento = new EventLog("MiaChiave");
evento.Source = "Origine";
//elimino tutte le informazioni
evento.Clear();
//elimino la chiave
EventLog.Delete("MiaChiave");
}
catch (Exception ex)
{
MessageBox.Show("Errore: " + ex.Message);
}
}
Il precedente codice, tramite l'oggetto eventlog imposta la proprietà source con l'origine appena creata, a questo punto tramite il metodo clear, cancelliamo tutti i log, ossia tutte le informazioni inserte per quell'origine, se invece vogliamo eliminare l'origine, dobbiamo utilizzare il metodo Delete della classe Eventlog.
Conclusioni
L'articolo, ha voluto fornire indicazioni riguardante la gestione del visualizzatore eventi di Windows, tecnica che può tornare utile al programmatore