Udostępnij za pośrednictwem


EventLog.CreateEventSource Metoda

Definicja

Ustanawia aplikację jako 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 zdarzeń przy użyciu określonych właściwości konfiguracji dla źródła zdarzeń i odpowiedniego dziennika zdarzeń.

CreateEventSource(String, String)

Ustanawia 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.

Ustanawia określoną nazwę źródła jako prawidłowe źródło zdarzeń do zapisywania wpisów w dzienniku na określonym komputerze. Tej metody można również użyć do utworzenia nowego dziennika niestandardowego na określonym komputerze.

CreateEventSource(EventSourceCreationData)

Źródło:
EventLog.cs
Ź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 zdarzeń 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 jego docelowego dziennika zdarzeń.

Wyjątki

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

-lub-

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

-lub-

Nazwa dziennika określona w 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 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 powoduje, że ścieżka klucza rejestru przekracza 254 znaki.

-lub-

Pierwsze 8 znaków nazwy dziennika określonego w sourceData nie są unikatowe.

-lub-

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

-lub-

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

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

sourceData jest 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 i ścieżki pliku zasobu w 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 komunikatu. 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

To przeciążenie służy do konfigurowania nowego źródła do zapisywania wpisów w dzienniku zdarzeń na komputerze lokalnym lub komputerze zdalnym. Nie jest konieczne użycie tej metody do odczytu z dziennika zdarzeń.

Metoda CreateEventSource używa właściwości wejściowych sourceDataSource, LogName i MachineName do 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. Jeśli właściwość LogName nie jest ustawiona, źródło jest zarejestrowane w dzienniku zdarzeń aplikacji. Jeśli MachineName nie jest ustawiona, źródło jest zarejestrowane na komputerze lokalnym.

Nuta

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ć przeszukiwane, 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 tym SecurityException jest zgłaszany.

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: standardowy token dostępu użytkownika 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 i WriteEntry, aby zapisywać 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.

Utwórz 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 zapisać zdarzenie z nowym źródłem, operacja zapisu zakończy się niepowodzeniem. Nowe źródło można skonfigurować przy użyciu EventLogInstallerlub metody CreateEventSource. Aby utworzyć nowe źródło zdarzeń, musisz mieć uprawnienia administracyjne na komputerze.

Źródło zdarzeń można utworzyć 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 jest tworzony, dopóki pierwszy wpis nie zostanie do niego zapisany.

System operacyjny przechowuje dzienniki zdarzeń jako pliki. Gdy używasz EventLogInstaller lub CreateEventSource do 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 właściwości Log z rozszerzeniem nazwy pliku ".evt".

Każde źródło może zapisywać tylko w jednym dzienniku 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ć za pomocą 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żesz 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. Użyj właściwości CategoryCount, CategoryResourceFile, MessageResourceFilei ParameterResourceFile, 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 trzeba ustawiać tych właściwości.

Źródło musi być skonfigurowane do zapisywania zlokalizowanych wpisów lub pisania ciągów bezpośrednich. Jeśli aplikacja zapisuje wpisy przy użyciu identyfikatorów zasobów 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 metodzie WriteEvent, aby zapisać wpisy 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 WriteEntry, aby zapisywać ciągi bezpośrednio w 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ą zamiast usuwać istniejące źródło.

Nuta

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
Źródło:
EventLog.cs

Ustanawia 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 "*", "?", czy "\".

-lub-

logName nie jest prawidł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 przekracza 254 znaki.

-lub-

Pierwsze 8 znaków logName pasuje do pierwszych 8 znaków 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 MySource źródłową, jeśli jeszcze nie istnieje, i zapisuje wpis w dzienniku zdarzeń 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" ) )
   {
      //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ć Source do istniejącego dziennika na komputerze lokalnym.

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

Nuta

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ć przeszukiwane, 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 tym SecurityException jest zgłaszany.

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: standardowy token dostępu użytkownika 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.

Źródło zdarzeń należy utworzyć 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 do znalezienia odpowiedniego dziennika, w którym należy umieścić wpis. Jeśli czytasz dziennik zdarzeń, możesz określić Sourcelub Log i MachineName.

Nuta

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

Użyj WriteEvent i WriteEntry, aby zapisywać 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.

Utwórz 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 zapisać zdarzenie z nowym źródłem, operacja zapisu zakończy się niepowodzeniem. Nowe źródło można skonfigurować przy użyciu EventLogInstallerlub metody CreateEventSource. Aby utworzyć nowe źródło zdarzeń, musisz mieć uprawnienia administracyjne na komputerze.

Źródło zdarzeń można utworzyć 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 jest tworzony, dopóki pierwszy wpis nie zostanie do niego zapisany.

System operacyjny przechowuje dzienniki zdarzeń jako pliki. Gdy używasz EventLogInstaller lub CreateEventSource do 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 właściwości Log 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 w jednym dzienniku 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 pisania ciągów bezpośrednich. Jeśli aplikacja zapisuje wpisy przy użyciu identyfikatorów zasobów 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 metodzie WriteEvent, aby zapisać wpisy 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 WriteEntry, aby zapisywać ciągi bezpośrednio w 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ą zamiast usuwać istniejące źródło.

Nuta

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
Źródło:
EventLog.cs

Przestroga

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

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

Ustanawia określoną nazwę źródła jako prawidłowe źródło zdarzeń do zapisywania wpisów w dzienniku na określonym komputerze. Tej metody można również użyć do utworzenia nowego dziennika niestandardowego na określonym komputerze.

public:
 static void CreateEventSource(System::String ^ source, System::String ^ logName, System::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")]
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.")>]
static member CreateEventSource : string * string * string -> unit
static member CreateEventSource : string * string * string -> unit
[<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
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ści domyślnej aplikacji.

machineName
String

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

Atrybuty

Wyjątki

machineName nie jest prawidłową nazwą komputera.

-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 "*", "?", czy "\".

-lub-

logName nie jest prawidł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 przekracza 254 znaki.

-lub-

Pierwsze 8 znaków logName pasuje do pierwszych 8 znaków 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 dziennika zdarzeń na określonym komputerze.

Przykłady

Poniższy przykład tworzy MySource źródłowy na komputerze MyServeri zapisuje wpis w dzienniku zdarzeń 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

Uwagi

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

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

Źródło zdarzeń należy utworzyć 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 do znalezienia odpowiedniego dziennika, w którym należy umieścić wpis. Jeśli czytasz dziennik zdarzeń, możesz określić Sourcelub Log i MachineName.

Nuta

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ć przeszukiwane, 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 tym SecurityException jest zgłaszany.

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: standardowy token dostępu użytkownika 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 i WriteEntry, aby zapisywać 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.

Utwórz 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 zapisać zdarzenie z nowym źródłem, operacja zapisu zakończy się niepowodzeniem. Nowe źródło można skonfigurować przy użyciu EventLogInstallerlub metody CreateEventSource. Aby utworzyć nowe źródło zdarzeń, musisz mieć uprawnienia administracyjne na komputerze.

Źródło zdarzeń można utworzyć 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 jest tworzony, dopóki pierwszy wpis nie zostanie do niego zapisany.

System operacyjny przechowuje dzienniki zdarzeń jako pliki. Gdy używasz EventLogInstaller lub CreateEventSource do 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 właściwości Log 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 w jednym dzienniku 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 pisania ciągów bezpośrednich. Jeśli aplikacja zapisuje wpisy przy użyciu identyfikatorów zasobów 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 metodzie WriteEvent, aby zapisać wpisy 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 WriteEntry, aby zapisywać ciągi bezpośrednio w 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ą zamiast usuwać istniejące źródło.

Nuta

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