EventLog.SourceExists Metodo

Definizione

Esegue la ricerca di una determinata origine eventi nel Registro di sistema di un computer.

Overload

SourceExists(String)

Determina se un'origine eventi è registrata nel computer locale.

SourceExists(String, String)

Determina se un'origine eventi è registrata nel computer specificato.

SourceExists(String)

Source:
EventLog.cs
Source:
EventLog.cs
Source:
EventLog.cs

Determina se un'origine eventi è registrata nel computer locale.

public:
 static bool SourceExists(System::String ^ source);
public static bool SourceExists (string source);
static member SourceExists : string -> bool
Public Shared Function SourceExists (source As String) As Boolean

Parametri

source
String

Nome dell'origine evento.

Restituisce

true se l'origine eventi è registrata nel computer locale; in caso contrario, false.

Eccezioni

Il parametro source non è stato trovato ma non è stato possibile cercare alcuni o tutti i log eventi.

Esempio

L'esempio seguente crea l'origine MySource , se non esiste già, e scrive una voce nel registro eventi MyNewLog.

#using <System.dll>

using namespace System;
using namespace System::Diagnostics;
using namespace System::Threading;
int main()
{
   
   // Create the source, if it does not already exist.
   if (  !EventLog::SourceExists( "MySource" ) )
   {
      EventLog::CreateEventSource( "MySource", "MyNewLog" );
      Console::WriteLine( "CreatingEventSource" );
   }

   
   // Create an EventLog instance and assign its source.
   EventLog^ myLog = gcnew EventLog;
   myLog->Source = "MySource";
   
   // Write an informational entry to the event log.    
   myLog->WriteEntry( "Writing to event log." );
   Console::WriteLine( "Message written to event log." );
}
using System;
using System.Diagnostics;
using System.Threading;

class MySample{

    public static void Main(){

        // Create the source, if it does not already exist.
        if(!EventLog.SourceExists("MySource"))
        {
            // An event log source should not be created and immediately used.
            // There is a latency time to enable the source, it should be created
            // prior to executing the application that uses the source.
            // Execute this sample a second time to use the new source.
            EventLog.CreateEventSource("MySource", "MyNewLog");
            Console.WriteLine("CreatingEventSource");
            Console.WriteLine("Exiting, execute the application a second time to use the source.");
            // The source is created.  Exit the application to allow it to be registered.
            return;
        }

        // Create an EventLog instance and assign its source.
        EventLog myLog = new EventLog();
        myLog.Source = "MySource";

        // Write an informational entry to the event log.
        myLog.WriteEntry("Writing to event log.");

        Console.WriteLine("Message written to event log.");
    }
}
Option Explicit
Option Strict
Imports System.Diagnostics
Imports System.Threading

Class MySample
    Public Shared Sub Main()
        ' Create the source, if it does not already exist.
        If Not EventLog.SourceExists("MySource") Then
            EventLog.CreateEventSource("MySource", "MyNewLog")
            Console.WriteLine("CreatingEventSource")
        End If
        
        ' Create an EventLog instance and assign its source.
        Dim myLog As New EventLog()
        myLog.Source = "MySource"
        
        ' Write an informational entry to the event log.    
        myLog.WriteEntry("Writing to event log.")
        
        Console.WriteLine("Message written to event log.")
    End Sub
End Class

Commenti

Utilizzare questo metodo per determinare se nel computer locale esiste un'origine evento. Se si desidera determinare se nel computer locale è presente un log, usare Exists.

Poiché questo metodo accede al Registro di sistema, è necessario disporre delle autorizzazioni appropriate del Registro di sistema nel computer locale; in caso contrario, verrà generata un'eccezione SecurityException .

Nota

Per cercare un'origine evento in Windows Vista e versioni successive o Windows Server 2003, è necessario disporre di privilegi amministrativi.

Il motivo di questo requisito è che tutti i registri eventi, inclusa la sicurezza, devono essere cercati per determinare se l'origine evento è univoca. A partire da Windows Vista, gli utenti non hanno l'autorizzazione per accedere al log di sicurezza; pertanto, viene generata un'eccezione SecurityException .

A partire da Windows Vista, controllo dell'account utente determina i privilegi di un utente. Ai membri del gruppo Administrators predefinito vengono assegnati due token di accesso in fase di esecuzione, ovvero un token di accesso utente standard e un token di accesso amministratore. Per impostazione predefinita, viene assegnato il ruolo dell'utente standard. Per eseguire il codice che accede ai contatori delle prestazioni, è necessario innanzitutto elevare i privilegi dall'utente standard all'amministratore. È possibile farlo quando si avvia un'applicazione facendo clic con il pulsante destro del mouse sull'icona dell'applicazione e indicando l'opzione di esecuzione come amministratore.

Nota

Un servizio in esecuzione con l'account LocalSystem non dispone dei privilegi necessari per eseguire questo metodo. La soluzione consiste nel verificare se l'origine evento esiste in ServiceInstallere, se non esiste, per creare l'origine nel programma di installazione.

Poiché non è possibile assegnare a una nuova origine il nome di un'origine esistente nello stesso computer, utilizzare questo metodo prima di tentare di chiamare CreateEventSource per garantire che un'origine con il nome specificato da source non esista già nel computer locale. Il source parametro non fa distinzione tra maiuscole e minuscole.

Vedi anche

Si applica a

SourceExists(String, String)

Source:
EventLog.cs
Source:
EventLog.cs
Source:
EventLog.cs

Determina se un'origine eventi è registrata nel computer specificato.

public:
 static bool SourceExists(System::String ^ source, System::String ^ machineName);
public static bool SourceExists (string source, string machineName);
static member SourceExists : string * string -> bool
Public Shared Function SourceExists (source As String, machineName As String) As Boolean

Parametri

source
String

Nome dell'origine evento.

machineName
String

Nome del computer in cui cercare oppure "." per il computer locale.

Restituisce

true se l'origine eventi è registrata nel computer indicato; in caso contrario, <false.

Eccezioni

machineName è un nome di computer non valido.

Il parametro source non è stato trovato ma non è stato possibile cercare alcuni o tutti i log eventi.

Esempio

L'esempio seguente crea l'origine MySource nel computer MyServere scrive una voce nel registro eventi MyNewLog.

#using <System.dll>

using namespace System;
using namespace System::Diagnostics;
using namespace System::Threading;
int main()
{
   
   // Create the source, if it does not already exist.
   if (  !EventLog::SourceExists( "MySource", "MyServer" ) )
   {
      EventLog::CreateEventSource( "MySource", "MyNewLog", "MyServer" );
      Console::WriteLine( "CreatingEventSource" );
   }

   
   // Create an EventLog instance and assign its source.
   EventLog^ myLog = gcnew EventLog;
   myLog->Source = "MySource";
   
   // Write an informational entry to the event log.    
   myLog->WriteEntry( "Writing to event log." );
   Console::WriteLine( "Message written to event log." );
}
using System;
using System.Diagnostics;
using System.Threading;

class MySample{

    public static void Main(){

        // Create the source, if it does not already exist.
        if(!EventLog.SourceExists("MySource", "MyServer"))
        {
            // An event log source should not be created and immediately used.
            // There is a latency time to enable the source, it should be created
            // prior to executing the application that uses the source.
            // Execute this sample a second time to use the new source.
            EventLog.CreateEventSource("MySource", "MyNewLog", "MyServer");
            Console.WriteLine("CreatingEventSource");
            Console.WriteLine("Exiting, execute the application a second time to use the source.");
            // The source is created.  Exit the application to allow it to be registered.
            return;
        }

        // Create an EventLog instance and assign its source.
        EventLog myLog = new EventLog();
        myLog.Source = "MySource";

        // Write an informational entry to the event log.
        myLog.WriteEntry("Writing to event log.");

        Console.WriteLine("Message written to event log.");
    }
}
Imports System.Diagnostics
Imports System.Threading

Class MySample
    Public Shared Sub Main()
        ' Create the source, if it does not already exist.
        If Not EventLog.SourceExists("MySource", "MyServer") Then
            EventLog.CreateEventSource("MySource", "MyNewLog", "MyServer")
            Console.WriteLine("CreatingEventSource")
        End If
        
        ' Create an EventLog instance and assign its source.
        Dim myLog As New EventLog()
        myLog.Source = "MySource"
        
        ' Write an informational entry to the event log.    
        myLog.WriteEntry("Writing to event log.")
        
        Console.WriteLine("Message written to event log.")
    End Sub
End Class

Commenti

Utilizzare questo metodo per determinare se nel computer specificato dal machineName parametro esiste un'origine evento. Se si desidera determinare se nel computer specificato esiste un log, usare Exists.

Poiché questo metodo accede al Registro di sistema, è necessario disporre delle autorizzazioni appropriate del Registro di sistema nel server specificato; in caso contrario, verrà generata un'eccezione SecurityException .

Nota

Per cercare un'origine evento in Windows Vista e versioni successive o Windows Server 2003, è necessario disporre di privilegi amministrativi.

Il motivo di questo requisito è che tutti i registri eventi, inclusa la sicurezza, devono essere cercati per determinare se l'origine evento è univoca. A partire da Windows Vista, gli utenti non hanno l'autorizzazione per accedere al log di sicurezza; pertanto, viene generata un'eccezione SecurityException .

A partire da Windows Vista, controllo dell'account utente determina i privilegi di un utente. Ai membri del gruppo Administrators predefinito vengono assegnati due token di accesso in fase di esecuzione, ovvero un token di accesso utente standard e un token di accesso amministratore. Per impostazione predefinita, viene assegnato il ruolo dell'utente standard. Per eseguire il codice che accede ai contatori delle prestazioni, è necessario innanzitutto elevare i privilegi dall'utente standard all'amministratore. È possibile farlo quando si avvia un'applicazione facendo clic con il pulsante destro del mouse sull'icona dell'applicazione e indicando l'opzione di esecuzione come amministratore.

Nota

Un servizio in esecuzione con l'account LocalSystem non dispone dei privilegi necessari per eseguire questo metodo. La soluzione consiste nel verificare se l'origine evento esiste in ServiceInstallere, se non esiste, per creare l'origine nel programma di installazione.

Poiché non è possibile assegnare a una nuova origine il nome di un'origine esistente nello stesso computer, utilizzare questo metodo prima di tentare di chiamare CreateEventSource per assicurarsi che un'origine con il nome specificato da source non esista già nel computer. I source parametri e non fanno distinzione tra maiuscole e machineName minuscole.

SourceExists è un static metodo, quindi può essere chiamato sulla classe stessa. Non è necessario creare un'istanza di EventLog per chiamare SourceExists.

Vedi anche

Si applica a