Alessandro Del Sole's Blog

{ A programming space about Microsoft® .NET® }

  Home :: Contact :: Syndication  :: Login
  1142 Posts :: 64 Stories :: 1518 Comments :: 237 Trackbacks

News

Your host

This is me! Questo spazio è dedicato a Microsoft® .NET®, di cui sono molto appassionato :-)

These postings are provided 'AS IS' for entertainment purposes only with absolutely no warranty expressed or implied and confer no rights.
If you're not an Italian user, please visit my English blog

Microsoft MVP

My MVP Profile

My MVP Corner Page

Il mio libro su VB2010!

Il mio nuovo libro su Visual Basic 2010 Il mio libro "Visual Basic 2010 Unleashed" è in prevendita. Clicca sulla copertina per informazioni!

Visual Basic Tips & Tricks Team Member

Le vostre visite

I'm a VB!

Guarda la mia intervista a Seattle

Windows Live Alerts

Vsi Builder 2008

Il mio tool per VS 2005/2008 Scarica Vsi Builder, il mio tool per Visual Studio 2005/2008!

Aggiungimi al Social MSDN!

Dove vivo

Contattami su Messenger


Grab this badge here!

OmniaDoc by AB Sistemi

CyberInstaller Beta Tester

Scarica il nuovo CIS 2009!!

Altri spazi

CodePlex download Scarica i miei progetti open-source su CodePlex!

Cerca nel blog



Article Categories

Archives

Post Categories

Image Galleries

.NET Framework

Back to basics

Blogroll

Help 1.x e 2.0

Microsoft & MSDN

Setup & Deployment

Visual Basic .NET e 2005

Prendo spunto da un thread apparso oggi sul forum MSDN dedicato a Visual Basic, in cui si richiedeva come sia possibile interrogare il registro degli eventi di log di Windows, filtrando il risultato in base all'ID evento specificato.

Innanzitutto si ottiene un riferimento al registro degli eventi di Windows con un'istanza della classe System.Diagnostics.EventLog, al cui costruttore si passa, come argomento, il nome del log da interrogare (come Application, Security, Setup ecc.). Una volta ottenuta l'istanza, si scrive una query LINQ che selezioni solo gli entry (rappresentati da oggetti EventLogEntry) contraddistinti dall'ID desiderato. Il seguente codice esegue tutte queste operazioni:

        Dim eLog As New EventLog("Application")

 

 

        Dim specificEntries = From logEntry In eLog.Entries.Cast(Of EventLogEntry)()

                              Where logEntry.InstanceId = 9010

                              Select logEntry

Notate l'utilizzo dell'operatore Cast(Of T), che spesso è necessario in scenari LINQ to Objects, laddove il compilatore non sia in grado di inferire il tipo corretto. La proprietà EventLogEntry.InstanceId ci consente di confrontare l'ID evento desiderato (sulla mia macchina l'ID 9010 riguarda gli eventi generati da TFS 2010 Beta 2). Possiamo poi elaborare l'insieme così ottenuto (per esempio con un For..Each) per ottenere informazioni sull'evento, ad esempio l'applicazione che l'ha generato (proprietà EventLogEntry.Source) o il messaggio dell'evento (proprietà EventLogEntry.Message).

Alessandro

posted on Tuesday, January 26, 2010 11:38 PM

Feedback

# re: Interrogare il registro eventi di Windows con LINQ e Visual Basic 3/12/2010 11:59 AM Alessandro Rimoldi
Ciao! Ho provato il codice che hai postato e, purtroppo, non riesco a farlo funzionare nel modo corretto!

Infatti, eseguendo l'applicazione in debug, ottengo questo messaggio di errore:

"Tipo generico 'Iterator`1' utilizzato con il numero errato di argomenti generici nell'assembly 'System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'.":"Iterator`1"

Sai come posso risolvere questa anomalia?

Grazie e buon lavoro!

Alessandro

Post Feedback

Title:
Name:
Url:
Comments: 
Codice di sicurezza
Protected by FormShield