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 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)
Nieaktualne.
Nieaktualne.
Nieaktualne.
Nieaktualne.

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)

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);
[System.MonoNotSupported("remote machine is not supported")]
public static void CreateEventSource (System.Diagnostics.EventSourceCreationData sourceData);
static member CreateEventSource : System.Diagnostics.EventSourceCreationData -> unit
[<System.MonoNotSupported("remote machine is not supported")>]
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ń.

Atrybuty
MonoNotSupportedAttribute

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 dzienników 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 jest dłuższa niż 254 znaki.

-lub- Pierwsze 8 znaków nazwy dziennika określonej w sourceData pliku 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 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 messageFilepliku .

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 komunikatu 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 zdarzenia 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 sourceData SourceLogName i , MachineName aby utworzyć 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ść nie jest ustawiona LogName , źródło jest zarejestrowane dla dziennika 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ć przeszukiwane, aby określić, czy źródło zdarzeń jest unikatowe. Począwszy od Windows Vista, użytkownicy nie mają uprawnień dostępu do dziennika zabezpieczeń, SecurityException dlatego jest zgłaszany.

Począwszy od 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ść swoje uprawnienia 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 funkcji WriteEvent i WriteEntry do zapisywania zdarzeń w dzienniku zdarzeń. Należy określić źródło zdarzeń do zapisywania zdarzeń; przed zapisaniem pierwszego wpisu ze źródłem należy utworzyć i skonfigurować źródło zdarzeń.

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 metody EventLogInstallerlub CreateEventSource metody . 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. Jeśli używasz polecenia EventLogInstaller lub CreateEventSource do tworzenia 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 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, zamiast określać rzeczywisty ciąg. 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 zasobów dla wszystkich trzech typów ciągów. CategoryCountUżyj właściwości , , MessageResourceFileCategoryResourceFilei 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 zapisywania 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 WriteEvent metodzie , 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, należy 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.

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)

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 wpisów źródła jest zapisywana. Możliwe wartości obejmują aplikację, system lub niestandardowy dziennik zdarzeń.

Wyjątki

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

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

-lub- logName jest nieprawidłowy 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 logName odpowiada pierwszym 8 znakom 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ć Source obiekt w istniejącym dzienniku na komputerze lokalnym.

Jeśli logName element to null lub 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 element 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ć przeszukiwane, aby określić, czy źródło zdarzeń jest unikatowe. Począwszy od Windows Vista, użytkownicy nie mają uprawnień dostępu do dziennika zabezpieczeń, SecurityException dlatego 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: 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ść swoje uprawnienia 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 elementu w celu znalezienia odpowiedniego dziennika, w którym należy umieścić wpis. Jeśli odczytujesz dziennik zdarzeń, możesz określić elementy Source, lub i Log MachineName.

Uwaga

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

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

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 metody EventLogInstallerlub CreateEventSource metody . 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. Jeśli używasz polecenia EventLogInstaller lub CreateEventSource do tworzenia 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 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 zapisywania 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 WriteEvent metodzie , 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, należy 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.

Uwaga

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

Zobacz też

Dotyczy

CreateEventSource(String, String, String)

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.

Przestroga

use CreateEventSource(EventSourceCreationData) instead

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("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("use CreateEventSource(EventSourceCreationData) instead")]
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
[<System.Obsolete("use CreateEventSource(EventSourceCreationData) instead")>]
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 wpisów źródła jest zapisywana. Możliwe wartości obejmują aplikację, system lub niestandardowy dziennik zdarzeń. Jeśli nie określisz wartości, logName zostanie ustawiona wartość domyślna Aplikacja.

machineName
String

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

Atrybuty

Wyjątki

Nazwa machineName nie jest prawidłową nazwą komputera.

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

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

-lub- logName jest nieprawidłowy 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 logName odpowiada pierwszym 8 znakom istniejącej nazwy dziennika zdarzeń na określonym komputerze.

-lub- Nie można zarejestrować źródła, ponieważ istnieje już 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 ź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ć Source obiekt w istniejącym dzienniku na określonym komputerze.

Jeśli logName element to null lub 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 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 elementu w celu znalezienia odpowiedniego dziennika, w którym należy umieścić wpis. Jeśli odczytujesz dziennik zdarzeń, możesz określić elementy Source, lub i Log MachineName.

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ć przeszukiwane, aby określić, czy źródło zdarzeń jest unikatowe. W Windows Vista i nowszych użytkownicy nie mają uprawnień dostępu do dziennika zabezpieczeń, SecurityException dlatego 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: 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ść swoje uprawnienia 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 funkcji WriteEvent i WriteEntry do zapisywania zdarzeń w dzienniku zdarzeń. Należy określić źródło zdarzeń do zapisywania zdarzeń; przed zapisaniem pierwszego wpisu ze źródłem należy utworzyć i skonfigurować źródło zdarzeń.

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 metody EventLogInstallerlub CreateEventSource metody . 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. Jeśli używasz polecenia EventLogInstaller lub CreateEventSource do tworzenia 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 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 zapisywania 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 WriteEvent metodzie , 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, należy 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.

Uwaga

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

Zobacz też

Dotyczy