EventLog.CreateEventSource Metoda

Definicja

Ustanawia aplikację w stanie zapisywać informacje o zdarzeniach w określonym dzienniku w systemie.

Przeciążenia

CreateEventSource(EventSourceCreationData)

Ustanawia prawidłowe źródło zdarzeń do zapisywania zlokalizowanych komunikatów o zdarzeniach przy użyciu określonych właściwości konfiguracji dla źródła zdarzeń i odpowiedniego dziennika zdarzeń.

CreateEventSource(String, String)

Określa określoną nazwę źródła jako prawidłowe źródło zdarzeń do zapisywania wpisów w dzienniku na komputerze lokalnym. Ta metoda może również utworzyć nowy dziennik niestandardowy na komputerze lokalnym.

CreateEventSource(String, String, String)
Przestarzałe.
Przestarzałe.
Przestarzałe.

Określa określoną nazwę źródła jako prawidłowe źródło zdarzeń do zapisywania wpisów w dzienniku na określonym komputerze. Ta metoda może również służyć do tworzenia nowego dziennika niestandardowego na określonym komputerze.

CreateEventSource(EventSourceCreationData)

Źródło:
EventLog.cs
Źródło:
EventLog.cs
Źródło:
EventLog.cs

Ustanawia prawidłowe źródło zdarzeń do zapisywania zlokalizowanych komunikatów o zdarzeniach przy użyciu określonych właściwości konfiguracji dla źródła zdarzeń i odpowiedniego dziennika zdarzeń.

public:
 static void CreateEventSource(System::Diagnostics::EventSourceCreationData ^ sourceData);
public static void CreateEventSource (System.Diagnostics.EventSourceCreationData sourceData);
static member CreateEventSource : System.Diagnostics.EventSourceCreationData -> unit
Public Shared Sub CreateEventSource (sourceData As EventSourceCreationData)

Parametry

sourceData
EventSourceCreationData

Właściwości konfiguracji źródła zdarzeń i docelowego dziennika zdarzeń.

Wyjątki

Nazwa komputera określona w pliku sourceData jest nieprawidłowa.

-lub-

Nazwa źródła określona w pliku sourceData to null.

-lub-

Nazwa dziennika określona w pliku sourceData jest nieprawidłowa. Nazwy dziennika zdarzeń muszą składać się z znaków drukowalnych i nie mogą zawierać znaków "*", "?" lub "\".

-lub-

Nazwa dziennika określona w pliku sourceData jest nieprawidłowa dla tworzenia dziennika użytkownika. Nazwy dzienników zdarzeń AppEvent, SysEvent i SecEvent są zarezerwowane do użytku systemowego.

-lub-

Nazwa dziennika jest zgodna z istniejącą nazwą źródła zdarzeń.

-lub-

Nazwa źródła określona w sourceData pliku powoduje, że ścieżka klucza rejestru przekracza 254 znaki.

-lub-

Pierwsze 8 znaków nazwy dziennika określonego w pliku sourceData nie jest unikatowe.

-lub-

Nazwa źródła określona w pliku sourceData jest już zarejestrowana.

-lub-

Nazwa źródła określona w pliku sourceData jest zgodna z istniejącą nazwą dziennika zdarzeń.

Nie można otworzyć klucza rejestru dla dziennika zdarzeń.

sourceData to null.

Przykłady

Poniższy przykład określa, czy źródło zdarzeń o nazwie SampleApplicationSource jest zarejestrowane na komputerze lokalnym. Jeśli źródło zdarzeń nie istnieje, przykład ustawia plik zasobu komunikatu dla źródła i tworzy nowe źródło zdarzeń. Na koniec przykład ustawia zlokalizowaną nazwę wyświetlaną dziennika zdarzeń przy użyciu wartości identyfikatora zasobu w DisplayNameMsgId pliku i ścieżki pliku zasobu w pliku .messageFile

void CreateEventSourceSample1( String^ messageFile )
{
   String^ myLogName;
   String^ sourceName = "SampleApplicationSource";
   
   // Create the event source if it does not exist.
   if (  !EventLog::SourceExists( sourceName ) )
   {
      
      // Create a new event source for the custom event log
      // named "myNewLog."  
      myLogName = "myNewLog";
      EventSourceCreationData ^ mySourceData = gcnew EventSourceCreationData( sourceName,myLogName );
      
      // Set the message resource file that the event source references.
      // All event resource identifiers correspond to text in this file.
      if (  !System::IO::File::Exists( messageFile ) )
      {
         Console::WriteLine( "Input message resource file does not exist - {0}", messageFile );
         messageFile = "";
      }
      else
      {
         
         // Set the specified file as the resource
         // file for message text, category text, and 
         // message parameter strings.  
         mySourceData->MessageResourceFile = messageFile;
         mySourceData->CategoryResourceFile = messageFile;
         mySourceData->CategoryCount = CategoryCount;
         mySourceData->ParameterResourceFile = messageFile;
         Console::WriteLine( "Event source message resource file set to {0}", messageFile );
      }

      Console::WriteLine( "Registering new source for event log." );
      EventLog::CreateEventSource( mySourceData );
   }
   else
   {
      
      // Get the event log corresponding to the existing source.
      myLogName = EventLog::LogNameFromSourceName( sourceName, "." );
   }

   
   // Register the localized name of the event log.
   // For example, the actual name of the event log is "myNewLog," but
   // the event log name displayed in the Event Viewer might be
   // "Sample Application Log" or some other application-specific
   // text.
   EventLog^ myEventLog = gcnew EventLog( myLogName,".",sourceName );
   if ( messageFile->Length > 0 )
   {
      myEventLog->RegisterDisplayName( messageFile, DisplayNameMsgId );
   }   
}
static void CreateEventSourceSample1(string messageFile)
{
    string myLogName;
    string sourceName = "SampleApplicationSource";

    // Create the event source if it does not exist.
    if(!EventLog.SourceExists(sourceName))
    {
        // Create a new event source for the custom event log
        // named "myNewLog."

        myLogName = "myNewLog";
        EventSourceCreationData mySourceData = new EventSourceCreationData(sourceName, myLogName);

        // Set the message resource file that the event source references.
        // All event resource identifiers correspond to text in this file.
        if (!System.IO.File.Exists(messageFile))
        {
            Console.WriteLine("Input message resource file does not exist - {0}",
                messageFile);
            messageFile = "";
        }
        else
        {
            // Set the specified file as the resource
            // file for message text, category text, and
            // message parameter strings.

            mySourceData.MessageResourceFile = messageFile;
            mySourceData.CategoryResourceFile = messageFile;
            mySourceData.CategoryCount = CategoryCount;
            mySourceData.ParameterResourceFile = messageFile;

            Console.WriteLine("Event source message resource file set to {0}",
                messageFile);
        }

        Console.WriteLine("Registering new source for event log.");
        EventLog.CreateEventSource(mySourceData);
    }
    else
    {
        // Get the event log corresponding to the existing source.
        myLogName = EventLog.LogNameFromSourceName(sourceName,".");
    }

    // Register the localized name of the event log.
    // For example, the actual name of the event log is "myNewLog," but
    // the event log name displayed in the Event Viewer might be
    // "Sample Application Log" or some other application-specific
    // text.
    EventLog myEventLog = new EventLog(myLogName, ".", sourceName);

    if (messageFile.Length > 0)
    {
        myEventLog.RegisterDisplayName(messageFile, DisplayNameMsgId);
    }
}
Public Shared Sub CreateEventSourceSample1(ByVal messageFile As String)

    Dim myLogName As String
    Dim sourceName As String = "SampleApplicationSource"

    ' Create the event source if it does not exist.
    If Not EventLog.SourceExists(sourceName)
    
        ' Create a new event source for the custom event log
        ' named "myNewLog."  

        myLogName = "myNewLog"
        Dim mySourceData As EventSourceCreationData = New EventSourceCreationData(sourceName, myLogName)

        ' Set the message resource file that the event source references.
        ' All event resource identifiers correspond to text in this file.
        If Not System.IO.File.Exists(messageFile)

            Console.WriteLine("Input message resource file does not exist - {0}", _
                messageFile)
            messageFile = ""
        Else 
            ' Set the specified file as the resource
            ' file for message text, category text and 
            ' message parameters strings.

            mySourceData.MessageResourceFile = messageFile
            mySourceData.CategoryResourceFile = messageFile
            mySourceData.CategoryCount = CategoryCount
            mySourceData.ParameterResourceFile = messageFile

            Console.WriteLine("Event source message resource file set to {0}", _
                messageFile)
        End If

        Console.WriteLine("Registering new source for event log.")
        EventLog.CreateEventSource(mySourceData)
    Else
        ' Get the event log corresponding to the existing source.
        myLogName = EventLog.LogNameFromSourceName(sourceName,".")
    End If

    ' Register the localized name of the event log.
    ' For example, the actual name of the event log is "myNewLog," but
    ' the event log name displayed in the Event Viewer might be
    ' "Sample Application Log" or some other application-specific
    ' text.
    Dim myEventLog As EventLog = New EventLog(myLogName, ".", sourceName)
    
    If messageFile.Length > 0
        myEventLog.RegisterDisplayName(messageFile, DisplayNameMsgId)
    End If
End Sub

W przykładzie użyto następującego pliku tekstowego wiadomości wbudowanego w bibliotekę zasobów EventLogMsgs.dll. Plik tekstowy wiadomości to źródło, z którego jest tworzony plik zasobu wiadomości. Plik tekstowy wiadomości definiuje identyfikatory zasobów i tekst dla kategorii, komunikatu o zdarzeniach i ciągów wstawiania parametrów. W szczególności identyfikator zasobu 5001 jest zdefiniowany dla zlokalizowanej nazwy dziennika zdarzeń.

; // EventLogMsgs.mc  
; // ********************************************************  

; // Use the following commands to build this file:  

; //   mc -s EventLogMsgs.mc  
; //   rc EventLogMsgs.rc  
; //   link /DLL /SUBSYSTEM:WINDOWS /NOENTRY /MACHINE:x86 EventLogMsgs.Res   
; // ********************************************************  

; // - Event categories -  
; // Categories must be numbered consecutively starting at 1.  
; // ********************************************************  

MessageId=0x1  
Severity=Success  
SymbolicName=INSTALL_CATEGORY  
Language=English  
Installation  
.  

MessageId=0x2  
Severity=Success  
SymbolicName=QUERY_CATEGORY  
Language=English  
Database Query  
.  

MessageId=0x3  
Severity=Success  
SymbolicName=REFRESH_CATEGORY  
Language=English  
Data Refresh  
.  

; // - Event messages -  
; // *********************************  

MessageId = 1000  
Severity = Success  
Facility = Application  
SymbolicName = AUDIT_SUCCESS_MESSAGE_ID_1000  
Language=English  
My application message text, in English, for message id 1000, called from %1.  
.  

MessageId = 1001  
Severity = Warning  
Facility = Application  
SymbolicName = AUDIT_FAILED_MESSAGE_ID_1001  
Language=English  
My application message text, in English, for message id 1001, called from %1.  
.  

MessageId = 1002  
Severity = Success  
Facility = Application  
SymbolicName = GENERIC_INFO_MESSAGE_ID_1002  
Language=English  
My generic information message in English, for message id 1002.  
.  

MessageId = 1003  
Severity = Warning  
Facility = Application  
SymbolicName = GENERIC_WARNING_MESSAGE_ID_1003  
Language=English  
My generic warning message in English, for message id 1003, called from %1.  
.  

MessageId = 1004  
Severity = Success  
Facility = Application  
SymbolicName = UPDATE_CYCLE_COMPLETE_MESSAGE_ID_1004  
Language=English  
The update cycle is complete for %%5002.  
.  

MessageId = 1005  
Severity = Warning  
Facility = Application  
SymbolicName = SERVER_CONNECTION_DOWN_MESSAGE_ID_1005  
Language=English  
The refresh operation did not complete because the connection to server %1 could not be established.  
.  

; // - Event log display name -  
; // ********************************************************  

MessageId = 5001  
Severity = Success  
Facility = Application  
SymbolicName = EVENT_LOG_DISPLAY_NAME_MSGID  
Language=English  
Sample Event Log  
.  

; // - Event message parameters -  
; //   Language independent insertion strings  
; // ********************************************************  

MessageId = 5002  
Severity = Success  
Facility = Application  
SymbolicName = EVENT_LOG_SERVICE_NAME_MSGID  
Language=English  
SVC_UPDATE.EXE  
.  

Uwagi

Użyj tego przeciążenia, aby skonfigurować nowe źródło do zapisywania wpisów w dzienniku zdarzeń na komputerze lokalnym lub komputerze zdalnym. Nie trzeba używać tej metody do odczytywania z dziennika zdarzeń.

Metoda CreateEventSource używa właściwości wejściowych sourceDataSourceLogName i do MachineName tworzenia wartości rejestru na komputerze docelowym dla nowego źródła i skojarzonego z nim dziennika zdarzeń. Nowa nazwa źródła nie może być zgodna z istniejącą nazwą źródła lub istniejącą nazwą dziennika zdarzeń na komputerze docelowym. LogName Jeśli właściwość nie jest ustawiona, źródło jest zarejestrowane w dzienniku zdarzeń aplikacji. Jeśli parametr MachineName nie jest ustawiony, źródło jest zarejestrowane na komputerze lokalnym.

Uwaga

Aby utworzyć źródło zdarzeń w systemie Windows Vista lub nowszym lub Windows Server 2003, musisz mieć uprawnienia administracyjne.

Przyczyną tego wymagania jest to, że wszystkie dzienniki zdarzeń, w tym zabezpieczenia, muszą być przeszukane, aby określić, czy źródło zdarzeń jest unikatowe. Począwszy od systemu Windows Vista, użytkownicy nie mają uprawnień dostępu do dziennika zabezpieczeń; w związku z SecurityException tym zgłaszana jest wartość .

Począwszy od systemu Windows Vista, kontrola konta użytkownika (UAC) określa uprawnienia użytkownika. Jeśli jesteś członkiem wbudowanej grupy Administratorzy, masz przypisane dwa tokeny dostępu w czasie wykonywania: token dostępu użytkownika standardowego i token dostępu administratora. Domyślnie jesteś w roli użytkownika standardowego. Aby wykonać kod, który uzyskuje dostęp do dziennika zabezpieczeń, musisz najpierw podnieść poziom uprawnień od użytkownika standardowego do administratora. Możesz to zrobić po uruchomieniu aplikacji, klikając prawym przyciskiem myszy ikonę aplikacji i wskazując, że chcesz uruchomić jako administrator.

Użyj WriteEvent polecenia i WriteEntry , aby zapisać zdarzenia w dzienniku zdarzeń. Należy określić źródło zdarzeń do zapisywania zdarzeń; Należy utworzyć i skonfigurować źródło zdarzeń przed zapisaniem pierwszego wpisu ze źródłem.

Twórca nowe źródło zdarzeń podczas instalacji aplikacji. Dzięki temu system operacyjny może odświeżyć listę zarejestrowanych źródeł zdarzeń i ich konfigurację. Jeśli system operacyjny nie odświeżył listy źródeł zdarzeń i spróbujesz napisać zdarzenie przy użyciu nowego źródła, operacja zapisu zakończy się niepowodzeniem. Nowe źródło można skonfigurować przy użyciu metody EventLogInstallerlub metody CreateEventSource . Aby utworzyć nowe źródło zdarzeń, musisz mieć uprawnienia administracyjne na komputerze.

Możesz utworzyć źródło zdarzeń dla istniejącego dziennika zdarzeń lub nowego dziennika zdarzeń. Podczas tworzenia nowego źródła dla nowego dziennika zdarzeń system rejestruje źródło dla tego dziennika, ale dziennik nie zostanie utworzony, dopóki pierwszy wpis nie zostanie do niego zapisany.

System operacyjny przechowuje dzienniki zdarzeń jako pliki. W przypadku użycia EventLogInstaller lub CreateEventSource utworzenia nowego dziennika zdarzeń skojarzony plik jest przechowywany w katalogu %SystemRoot%\System32\Config na określonym komputerze. Nazwa pliku jest ustawiana przez dołączenie pierwszych 8 znaków Log właściwości z rozszerzeniem nazwy pliku ".evt".

Każde źródło może zapisywać tylko jeden dziennik zdarzeń jednocześnie; Jednak aplikacja może używać wielu źródeł do zapisywania w wielu dziennikach zdarzeń. Na przykład aplikacja może wymagać wielu źródeł skonfigurowanych dla różnych dzienników zdarzeń lub różnych plików zasobów.

Źródło zdarzeń można zarejestrować przy użyciu zlokalizowanych plików zasobów dla kategorii zdarzeń i ciągów komunikatów. Aplikacja może zapisywać wpisy dziennika zdarzeń przy użyciu identyfikatorów zasobów, a nie określać rzeczywistego ciągu. Podgląd zdarzeń używa identyfikatora zasobu do znajdowania i wyświetlania odpowiedniego ciągu z zlokalizowanego pliku zasobów na podstawie bieżących ustawień języka. Można zarejestrować oddzielny plik dla kategorii zdarzeń, komunikatów i ciągów wstawiania parametrów lub zarejestrować ten sam plik zasobu dla wszystkich trzech typów ciągów. CategoryCountUżyj właściwości , CategoryResourceFile, iMessageResourceFileParameterResourceFile, aby skonfigurować źródło do zapisywania zlokalizowanych wpisów w dzienniku zdarzeń. Jeśli aplikacja zapisuje wartości ciągów bezpośrednio w dzienniku zdarzeń, nie musisz ustawiać tych właściwości.

Źródło musi być skonfigurowane do zapisywania zlokalizowanych wpisów lub zapisywania ciągów bezpośrednich. Jeśli aplikacja zapisuje wpisy przy użyciu zarówno identyfikatorów zasobów, jak i wartości ciągów, musisz zarejestrować dwa oddzielne źródła. Na przykład skonfiguruj jedno źródło z plikami zasobów, a następnie użyj tego źródła w WriteEvent metodzie do zapisu wpisów przy użyciu identyfikatorów zasobów w dzienniku zdarzeń. Następnie utwórz inne źródło bez plików zasobów i użyj tego źródła w metodzie , aby zapisywać ciągi bezpośrednio w WriteEntry dzienniku zdarzeń przy użyciu tego źródła.

Aby zmienić szczegóły konfiguracji istniejącego źródła, musisz usunąć źródło, a następnie utworzyć je przy użyciu nowej konfiguracji. Jeśli inne aplikacje lub składniki używają istniejącego źródła, utwórz nowe źródło ze zaktualizowaną konfiguracją, a nie usunięcie istniejącego źródła.

Uwaga

Jeśli źródło jest skonfigurowane dla dziennika zdarzeń i ponownie skonfigurujesz go dla innego dziennika zdarzeń, musisz ponownie uruchomić komputer, aby zmiany zaczęły obowiązywać.

Zobacz też

Dotyczy

CreateEventSource(String, String)

Źródło:
EventLog.cs
Źródło:
EventLog.cs
Źródło:
EventLog.cs

Określa określoną nazwę źródła jako prawidłowe źródło zdarzeń do zapisywania wpisów w dzienniku na komputerze lokalnym. Ta metoda może również utworzyć nowy dziennik niestandardowy na komputerze lokalnym.

public:
 static void CreateEventSource(System::String ^ source, System::String ^ logName);
public static void CreateEventSource (string source, string logName);
static member CreateEventSource : string * string -> unit
Public Shared Sub CreateEventSource (source As String, logName As String)

Parametry

source
String

Nazwa źródłowa, za pomocą której aplikacja jest zarejestrowana na komputerze lokalnym.

logName
String

Nazwa dziennika, do których są zapisywane wpisy źródła. Możliwe wartości obejmują aplikację, system lub niestandardowy dziennik zdarzeń.

Wyjątki

source jest pustym ciągiem ("") lub null.

-lub-

logName nie jest prawidłową nazwą dziennika zdarzeń. Nazwy dziennika zdarzeń muszą składać się z znaków drukowalnych i nie mogą zawierać znaków "*", "?" lub "\".

-lub-

logName jest nieprawidłowa w przypadku tworzenia dziennika użytkownika. Nazwy dzienników zdarzeń AppEvent, SysEvent i SecEvent są zarezerwowane do użytku systemowego.

-lub-

Nazwa dziennika jest zgodna z istniejącą nazwą źródła zdarzeń.

-lub-

Nazwa źródła powoduje, że ścieżka klucza rejestru jest dłuższa niż 254 znaki.

-lub-

Pierwsze 8 znaków jest zgodne z pierwszą 8 znakami logName istniejącej nazwy dziennika zdarzeń.

-lub-

Nie można zarejestrować źródła, ponieważ już istnieje na komputerze lokalnym.

-lub-

Nazwa źródła jest zgodna z istniejącą nazwą dziennika zdarzeń.

Nie można otworzyć klucza rejestru dziennika zdarzeń na komputerze lokalnym.

Przykłady

Poniższy przykład tworzy źródło MySource , jeśli jeszcze nie istnieje, i zapisuje wpis w dzienniku MyNewLogzdarzeń .

#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" ) )
   {
      //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" );
      // The source is created.  Exit the application to allow it to be registered.
      return 0;
   }

   
   // 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." );
}
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("CreatedEventSource");
            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.");
    }
}
Option Explicit
Option Strict

Imports System.Diagnostics
Imports System.Threading

Class MySample
    Public Shared Sub Main()
        
        If Not EventLog.SourceExists("MySource") Then
            ' Create the source, if it does not already exist.
            ' 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")
            'The source is created.  Exit the application to allow it to be registered.
            Return
        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.")
    End Sub
End Class

Uwagi

Użyj tego przeciążenia, aby utworzyć dziennik niestandardowy lub utworzyć i zarejestrować obiekt Source w istniejącym dzienniku na komputerze lokalnym.

Jeśli logName jest lub null pusty ciąg ("") podczas wywoływania CreateEventSource, dziennik jest domyślnie wyświetlany w dzienniku aplikacji. Jeśli dziennik nie istnieje na komputerze lokalnym, system tworzy dziennik niestandardowy i rejestruje aplikację jako Source dla tego dziennika.

Uwaga

Aby utworzyć źródło zdarzeń w systemie Windows Vista lub nowszym lub Windows Server 2003, musisz mieć uprawnienia administracyjne.

Przyczyną tego wymagania jest to, że wszystkie dzienniki zdarzeń, w tym zabezpieczenia, muszą być przeszukane, aby określić, czy źródło zdarzeń jest unikatowe. Począwszy od systemu Windows Vista, użytkownicy nie mają uprawnień dostępu do dziennika zabezpieczeń; w związku z SecurityException tym zgłaszana jest wartość .

W systemie Windows Vista i nowszych Kontrola konta użytkownika (UAC) określa uprawnienia użytkownika. Jeśli jesteś członkiem wbudowanej grupy Administratorzy, masz przypisane dwa tokeny dostępu w czasie wykonywania: token dostępu użytkownika standardowego i token dostępu administratora. Domyślnie jesteś w roli użytkownika standardowego. Aby wykonać kod, który uzyskuje dostęp do dziennika zabezpieczeń, musisz najpierw podnieść poziom uprawnień od użytkownika standardowego do administratora. Możesz to zrobić po uruchomieniu aplikacji, klikając prawym przyciskiem myszy ikonę aplikacji i wskazując, że chcesz uruchomić jako administrator.

Musisz utworzyć źródło zdarzeń tylko wtedy, gdy zapisujesz je w dzienniku zdarzeń. Przed zapisaniem wpisu w dzienniku zdarzeń należy zarejestrować źródło zdarzeń w dzienniku zdarzeń jako prawidłowe źródło zdarzeń. Podczas pisania wpisu dziennika system używa Source elementu , aby znaleźć odpowiedni dziennik, w którym ma być umieszczany wpis. Jeśli czytasz dziennik zdarzeń, możesz określić wartość Source, lub i LogMachineName.

Uwaga

Nie musisz określać, MachineName czy nawiązujesz połączenie z dziennikiem na komputerze lokalnym. Jeśli nie określisz parametru MachineName podczas odczytywania z dziennika, zakłada się, że zakłada się, że komputer lokalny (".").

Użyj WriteEvent polecenia i WriteEntry , aby zapisać zdarzenia w dzienniku zdarzeń. Należy określić źródło zdarzeń do zapisywania zdarzeń; Należy utworzyć i skonfigurować źródło zdarzeń przed zapisaniem pierwszego wpisu ze źródłem.

Twórca nowe źródło zdarzeń podczas instalacji aplikacji. Dzięki temu system operacyjny może odświeżyć listę zarejestrowanych źródeł zdarzeń i ich konfigurację. Jeśli system operacyjny nie odświeżył listy źródeł zdarzeń i spróbujesz napisać zdarzenie przy użyciu nowego źródła, operacja zapisu zakończy się niepowodzeniem. Nowe źródło można skonfigurować przy użyciu metody EventLogInstallerlub metody CreateEventSource . Aby utworzyć nowe źródło zdarzeń, musisz mieć uprawnienia administracyjne na komputerze.

Możesz utworzyć źródło zdarzeń dla istniejącego dziennika zdarzeń lub nowego dziennika zdarzeń. Podczas tworzenia nowego źródła dla nowego dziennika zdarzeń system rejestruje źródło dla tego dziennika, ale dziennik nie zostanie utworzony, dopóki pierwszy wpis nie zostanie do niego zapisany.

System operacyjny przechowuje dzienniki zdarzeń jako pliki. W przypadku użycia EventLogInstaller lub CreateEventSource utworzenia nowego dziennika zdarzeń skojarzony plik jest przechowywany w katalogu %SystemRoot%\System32\Config na określonym komputerze. Nazwa pliku jest ustawiana przez dołączenie pierwszych 8 znaków Log właściwości z rozszerzeniem nazwy pliku ".evt".

Źródło musi być unikatowe na komputerze lokalnym; Nowa nazwa źródła nie może być zgodna z istniejącą nazwą źródła lub istniejącą nazwą dziennika zdarzeń. Każde źródło może zapisywać tylko jeden dziennik zdarzeń jednocześnie; Jednak aplikacja może używać wielu źródeł do zapisywania w wielu dziennikach zdarzeń. Na przykład aplikacja może wymagać wielu źródeł skonfigurowanych dla różnych dzienników zdarzeń lub różnych plików zasobów.

Źródło musi być skonfigurowane do zapisywania zlokalizowanych wpisów lub zapisywania ciągów bezpośrednich. Jeśli aplikacja zapisuje wpisy przy użyciu zarówno identyfikatorów zasobów, jak i wartości ciągów, musisz zarejestrować dwa oddzielne źródła. Na przykład skonfiguruj jedno źródło z plikami zasobów, a następnie użyj tego źródła w WriteEvent metodzie do zapisu wpisów przy użyciu identyfikatorów zasobów w dzienniku zdarzeń. Następnie utwórz inne źródło bez plików zasobów i użyj tego źródła w metodzie , aby zapisywać ciągi bezpośrednio w WriteEntry dzienniku zdarzeń przy użyciu tego źródła.

Aby zmienić szczegóły konfiguracji istniejącego źródła, musisz usunąć źródło, a następnie utworzyć je przy użyciu nowej konfiguracji. Jeśli inne aplikacje lub składniki używają istniejącego źródła, utwórz nowe źródło ze zaktualizowaną konfiguracją, a nie usunięcie istniejącego źródła.

Uwaga

Jeśli źródło zostało już zamapowane na dziennik i mapujesz je ponownie na nowy dziennik, musisz ponownie uruchomić komputer, aby zmiany zaczęły obowiązywać.

Zobacz też

Dotyczy

CreateEventSource(String, String, String)

Źródło:
EventLog.cs
Źródło:
EventLog.cs
Źródło:
EventLog.cs

Przestroga

This method has been deprecated. Please use System.Diagnostics.EventLog.CreateEventSource(EventSourceCreationData sourceData) instead. http://go.microsoft.com/fwlink/?linkid=14202

Przestroga

This method has been deprecated. Please use System.Diagnostics.EventLog.CreateEventSource(EventSourceCreationData sourceData) instead. https://go.microsoft.com/fwlink/?linkid=14202

Przestroga

EventLog.CreateEventSource has been deprecated. Use System.Diagnostics.EventLog.CreateEventSource(EventSourceCreationData sourceData) instead.

Określa określoną nazwę źródła jako prawidłowe źródło zdarzeń do zapisywania wpisów w dzienniku na określonym komputerze. Ta metoda może również służyć do tworzenia nowego dziennika niestandardowego na określonym komputerze.

public:
 static void CreateEventSource(System::String ^ source, System::String ^ logName, System::String ^ machineName);
[System.Obsolete("This method has been deprecated.  Please use System.Diagnostics.EventLog.CreateEventSource(EventSourceCreationData sourceData) instead.  http://go.microsoft.com/fwlink/?linkid=14202")]
public static void CreateEventSource (string source, string logName, string machineName);
[System.Obsolete("This method has been deprecated.  Please use System.Diagnostics.EventLog.CreateEventSource(EventSourceCreationData sourceData) instead.  https://go.microsoft.com/fwlink/?linkid=14202")]
public static void CreateEventSource (string source, string logName, string machineName);
[System.Obsolete("EventLog.CreateEventSource has been deprecated. Use System.Diagnostics.EventLog.CreateEventSource(EventSourceCreationData sourceData) instead.")]
public static void CreateEventSource (string source, string logName, string machineName);
public static void CreateEventSource (string source, string logName, string machineName);
[<System.Obsolete("This method has been deprecated.  Please use System.Diagnostics.EventLog.CreateEventSource(EventSourceCreationData sourceData) instead.  http://go.microsoft.com/fwlink/?linkid=14202")>]
static member CreateEventSource : string * string * string -> unit
[<System.Obsolete("This method has been deprecated.  Please use System.Diagnostics.EventLog.CreateEventSource(EventSourceCreationData sourceData) instead.  https://go.microsoft.com/fwlink/?linkid=14202")>]
static member CreateEventSource : string * string * string -> unit
[<System.Obsolete("EventLog.CreateEventSource has been deprecated. Use System.Diagnostics.EventLog.CreateEventSource(EventSourceCreationData sourceData) instead.")>]
static member CreateEventSource : string * string * string -> unit
static member CreateEventSource : string * string * string -> unit
Public Shared Sub CreateEventSource (source As String, logName As String, machineName As String)

Parametry

source
String

Źródło, za pomocą którego aplikacja jest zarejestrowana na określonym komputerze.

logName
String

Nazwa dziennika, do których są zapisywane wpisy źródła. Możliwe wartości obejmują aplikację, system lub niestandardowy dziennik zdarzeń. Jeśli nie określisz wartości, logName wartość domyślna to Aplikacja.

machineName
String

Nazwa komputera do zarejestrowania tego źródła zdarzeń lub "." dla komputera lokalnego.

Atrybuty

Wyjątki

Nazwa machineName komputera nie jest prawidłowa.

-lub-

source jest pustym ciągiem ("") lub null.

-lub-

logName nie jest prawidłową nazwą dziennika zdarzeń. Nazwy dziennika zdarzeń muszą składać się z znaków drukowalnych i nie mogą zawierać znaków "*", "?" lub "\".

-lub-

logName jest nieprawidłowa w przypadku tworzenia dziennika użytkownika. Nazwy dzienników zdarzeń AppEvent, SysEvent i SecEvent są zarezerwowane do użytku systemowego.

-lub-

Nazwa dziennika jest zgodna z istniejącą nazwą źródła zdarzeń.

-lub-

Nazwa źródła powoduje, że ścieżka klucza rejestru jest dłuższa niż 254 znaki.

-lub-

Pierwsze 8 znaków jest zgodne z pierwszą 8 znakami logName istniejącej nazwy dziennika zdarzeń na określonym komputerze.

-lub-

Nie można zarejestrować źródła, ponieważ już istnieje na określonym komputerze.

-lub-

Nazwa źródła jest zgodna z istniejącą nazwą źródła zdarzeń.

Nie można otworzyć klucza rejestru dla dziennika zdarzeń na określonym komputerze.

Przykłady

Poniższy przykład tworzy źródło MySource na komputerze MyServeri zapisuje wpis w dzienniku MyNewLogzdarzeń.

#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

Uwagi

Użyj tego przeciążenia, aby utworzyć dziennik niestandardowy lub utworzyć i zarejestrować obiekt Source w istniejącym dzienniku na określonym komputerze.

Jeśli logName jest lub null pusty ciąg ("") podczas wywoływania CreateEventSource, dziennik jest domyślnie wyświetlany w dzienniku aplikacji. Jeśli dziennik nie istnieje na określonym komputerze, system tworzy dziennik niestandardowy i rejestruje aplikację jako Source dziennik dla tego dziennika.

Musisz utworzyć źródło zdarzeń tylko wtedy, gdy zapisujesz je w dzienniku zdarzeń. Przed zapisaniem wpisu w dzienniku zdarzeń należy zarejestrować źródło zdarzeń w dzienniku zdarzeń jako prawidłowe źródło zdarzeń. Podczas pisania wpisu dziennika system używa Source elementu , aby znaleźć odpowiedni dziennik, w którym ma być umieszczany wpis. Jeśli czytasz dziennik zdarzeń, możesz określić wartość Source, lub i LogMachineName.

Uwaga

Aby utworzyć źródło zdarzeń w systemie Windows Vista lub nowszym lub Windows Server 2003, musisz mieć uprawnienia administracyjne.

Przyczyną tego wymagania jest to, że wszystkie dzienniki zdarzeń, w tym zabezpieczenia, muszą być przeszukane, aby określić, czy źródło zdarzeń jest unikatowe. W systemie Windows Vista i nowszych użytkownicy nie mają uprawnień dostępu do dziennika zabezpieczeń; w związku z SecurityException tym zgłaszana jest wartość .

W systemie Windows Vista i nowszych Kontrola konta użytkownika (UAC) określa uprawnienia użytkownika. Jeśli jesteś członkiem wbudowanej grupy Administratorzy, masz przypisane dwa tokeny dostępu w czasie wykonywania: token dostępu użytkownika standardowego i token dostępu administratora. Domyślnie jesteś w roli użytkownika standardowego. Aby wykonać kod, który uzyskuje dostęp do dziennika zabezpieczeń, musisz najpierw podnieść poziom uprawnień od użytkownika standardowego do administratora. Możesz to zrobić po uruchomieniu aplikacji, klikając prawym przyciskiem myszy ikonę aplikacji i wskazując, że chcesz uruchomić jako administrator.

Użyj WriteEvent polecenia i WriteEntry , aby zapisać zdarzenia w dzienniku zdarzeń. Należy określić źródło zdarzeń do zapisywania zdarzeń; Należy utworzyć i skonfigurować źródło zdarzeń przed zapisaniem pierwszego wpisu ze źródłem.

Twórca nowe źródło zdarzeń podczas instalacji aplikacji. Dzięki temu system operacyjny może odświeżyć listę zarejestrowanych źródeł zdarzeń i ich konfigurację. Jeśli system operacyjny nie odświeżył listy źródeł zdarzeń i spróbujesz napisać zdarzenie przy użyciu nowego źródła, operacja zapisu zakończy się niepowodzeniem. Nowe źródło można skonfigurować przy użyciu metody EventLogInstallerlub metody CreateEventSource . Aby utworzyć nowe źródło zdarzeń, musisz mieć uprawnienia administracyjne na komputerze.

Możesz utworzyć źródło zdarzeń dla istniejącego dziennika zdarzeń lub nowego dziennika zdarzeń. Podczas tworzenia nowego źródła dla nowego dziennika zdarzeń system rejestruje źródło dla tego dziennika, ale dziennik nie zostanie utworzony, dopóki pierwszy wpis nie zostanie do niego zapisany.

System operacyjny przechowuje dzienniki zdarzeń jako pliki. W przypadku użycia EventLogInstaller lub CreateEventSource utworzenia nowego dziennika zdarzeń skojarzony plik jest przechowywany w katalogu %SystemRoot%\System32\Config na określonym komputerze. Nazwa pliku jest ustawiana przez dołączenie pierwszych 8 znaków Log właściwości z rozszerzeniem nazwy pliku ".evt".

Źródło musi być unikatowe na komputerze lokalnym; Nowa nazwa źródła nie może być zgodna z istniejącą nazwą źródła lub istniejącą nazwą dziennika zdarzeń. Każde źródło może zapisywać tylko jeden dziennik zdarzeń jednocześnie; Jednak aplikacja może używać wielu źródeł do zapisywania w wielu dziennikach zdarzeń. Na przykład aplikacja może wymagać wielu źródeł skonfigurowanych dla różnych dzienników zdarzeń lub różnych plików zasobów.

Źródło musi być skonfigurowane do zapisywania zlokalizowanych wpisów lub zapisywania ciągów bezpośrednich. Jeśli aplikacja zapisuje wpisy przy użyciu zarówno identyfikatorów zasobów, jak i wartości ciągów, musisz zarejestrować dwa oddzielne źródła. Na przykład skonfiguruj jedno źródło z plikami zasobów, a następnie użyj tego źródła w WriteEvent metodzie do zapisu wpisów przy użyciu identyfikatorów zasobów w dzienniku zdarzeń. Następnie utwórz inne źródło bez plików zasobów i użyj tego źródła w metodzie , aby zapisywać ciągi bezpośrednio w WriteEntry dzienniku zdarzeń przy użyciu tego źródła.

Aby zmienić szczegóły konfiguracji istniejącego źródła, musisz usunąć źródło, a następnie utworzyć je przy użyciu nowej konfiguracji. Jeśli inne aplikacje lub składniki używają istniejącego źródła, utwórz nowe źródło ze zaktualizowaną konfiguracją, a nie usunięcie istniejącego źródła.

Uwaga

Jeśli źródło zostało już zamapowane na dziennik i mapujesz je ponownie na nowy dziennik, musisz ponownie uruchomić komputer, aby zmiany zaczęły obowiązywać.

Zobacz też

Dotyczy