sabato 24 settembre 2011

utilizzare visualizzatore eventi in .Net 4 VB.Net e C#

Riporto l'articolo scritto per il sito http://www.iprogrammatori.it/articoli/programmazione/art_la-gestone-del-visualizzatore-eventi-in-_1067.aspx



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



Private Sub BtnCreaVoce_Click(sender As System.Object, e As System.EventArgs) Handles BtnCreaVoce.Click



Try



'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)



Catch ex As Exception



MessageBox.Show("Errore: " + ex.Message)



End Try









End Sub



C#



private void BtnCreaVoce_Click(object sender, EventArgs e)



{



try



{



//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);



}



catch (Exception ex)



{



MessageBox.Show("Errore: " + ex.Message);



}



 



 



 



}




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.

Nessun commento: