EventLog.CreateEventSource Metoda

Definice

Vytvoří aplikaci jako schopnou zapisovat informace o událostech do konkrétního protokolu v systému.

Přetížení

CreateEventSource(EventSourceCreationData)

Vytvoří platný zdroj událostí pro zápis lokalizovaných zpráv událostí pomocí zadaných vlastností konfigurace pro zdroj událostí a odpovídající protokol událostí.

CreateEventSource(String, String)

Vytvoří zadaný název zdroje jako platný zdroj událostí pro zápis položek do protokolu v místním počítači. Tato metoda může také vytvořit nový vlastní protokol v místním počítači.

CreateEventSource(String, String, String)
Zastaralé.
Zastaralé.
Zastaralé.

Vytvoří zadaný název zdroje jako platný zdroj událostí pro zápis položek do protokolu v zadaném počítači. Tuto metodu lze také použít k vytvoření nového vlastního protokolu v zadaném počítači.

CreateEventSource(EventSourceCreationData)

Zdroj:
EventLog.cs
Zdroj:
EventLog.cs
Zdroj:
EventLog.cs

Vytvoří platný zdroj událostí pro zápis lokalizovaných zpráv událostí pomocí zadaných vlastností konfigurace pro zdroj událostí a odpovídající protokol událostí.

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

Vlastnosti konfigurace zdroje událostí a jeho cílového protokolu událostí.

Výjimky

Název počítače zadaný v sourceData nástroji není platný.

-nebo-

Název zdroje zadaný v sourceData souboru je null.

-nebo-

Název protokolu zadaný v sourceData souboru není platný. Názvy protokolů událostí musí obsahovat tisknutelné znaky a nesmí obsahovat znaky *, ? nebo \.

-nebo-

Název protokolu zadaný v sourceData nástroji není platný pro vytvoření protokolu uživatele. Názvy protokolů událostí AppEvent, SysEvent a SecEvent jsou vyhrazené pro použití v systému.

-nebo-

Název protokolu odpovídá názvu existujícího zdroje událostí.

-nebo-

Výsledkem názvu zdroje zadaného v sourceData je cesta ke klíči registru delší než 254 znaků.

-nebo-

Prvních 8 znaků názvu protokolu zadaného v sourceData souboru není jedinečných.

-nebo-

Název zdroje zadaný v sourceData souboru je již zaregistrován.

-nebo-

Název zdroje zadaný v sourceData souboru odpovídá názvu existujícího protokolu událostí.

Klíč registru pro protokol událostí nelze otevřít.

sourceData je null.

Příklady

Následující příklad určuje, zda je zdroj událostí s názvem SampleApplicationSource registrován v místním počítači. Pokud zdroj události neexistuje, příklad nastaví soubor prostředků zprávy pro zdroj a vytvoří nový zdroj událostí. Nakonec příklad nastaví lokalizovaný zobrazovaný název protokolu událostí pomocí hodnoty identifikátoru prostředku v DisplayNameMsgId a cesty k souboru prostředku v 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

V příkladu se používá následující textový soubor zprávy, který je integrovaný do knihovny prostředků EventLogMsgs.dll. Textový soubor zprávy je zdroj, ze kterého je vytvořen soubor prostředků zprávy. Textový soubor zprávy definuje identifikátory prostředků a text pro řetězce kategorie, zprávy události a vkládání parametrů. Konkrétně se pro lokalizovaný název protokolu událostí definuje identifikátor prostředku 5001.

; // 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  
.  

Poznámky

Toto přetížení slouží ke konfiguraci nového zdroje pro zápis položek do protokolu událostí v místním nebo vzdáleném počítači. Tuto metodu není nutné používat ke čtení z protokolu událostí.

Metoda CreateEventSource používá vstupní sourceDataSourcevlastnosti , LogName a MachineName k vytvoření hodnot registru v cílovém počítači pro nový zdroj a jeho přidružený protokol událostí. Nový název zdroje nemůže odpovídat existujícímu názvu zdroje nebo existujícímu názvu protokolu událostí v cílovém počítači. LogName Pokud vlastnost není nastavená, zdroj se zaregistruje pro protokol událostí aplikace. MachineName Pokud není nastavena, zdroj se zaregistruje v místním počítači.

Poznámka

Pokud chcete vytvořit zdroj událostí v systému Windows Vista a novějším nebo Windows Serveru 2003, musíte mít oprávnění správce.

Důvodem tohoto požadavku je to, že všechny protokoly událostí, včetně zabezpečení, se musí prohledávat, aby se zjistilo, jestli je zdroj událostí jedinečný. Počínaje systémem Windows Vista uživatelé nemají oprávnění pro přístup k protokolu zabezpečení; SecurityException proto je vyvolán .

Počínaje systémem Windows Vista určuje řízení uživatelských účtů (UAC) oprávnění uživatele. Pokud jste členem předdefinované skupiny Administrators, máte přiřazeny dva přístupové tokeny run-time: token přístupu uživatele se standardním oprávněním a token přístupu správce. Ve výchozím nastavení máte roli standardního uživatele. Pokud chcete spustit kód, který přistupuje k protokolu zabezpečení, musíte nejprve zvýšit oprávnění ze standardního uživatele na správce. Můžete to udělat při spuštění aplikace tak, že kliknete pravým tlačítkem myši na ikonu aplikace a označíte, že chcete aplikaci spustit jako správce.

K zápisu událostí do protokolu událostí použijte WriteEvent a WriteEntry . Je nutné zadat zdroj událostí pro zápis událostí; před zápisem první položky se zdrojem musíte vytvořit a nakonfigurovat zdroj událostí.

Create nový zdroj událostí během instalace aplikace. Operační systém tak může aktualizovat seznam registrovaných zdrojů událostí a jejich konfiguraci. Pokud operační systém neaktualizuje seznam zdrojů událostí a pokusíte se napsat událost s novým zdrojem, operace zápisu selže. Nový zdroj můžete nakonfigurovat pomocí EventLogInstaller, nebo pomocí CreateEventSource metody . K vytvoření nového zdroje událostí musíte mít v počítači oprávnění správce.

Můžete vytvořit zdroj událostí pro existující protokol událostí nebo nový protokol událostí. Když vytvoříte nový zdroj pro nový protokol událostí, systém zaregistruje zdroj pro tento protokol, ale protokol se nevytvoří, dokud do něj není zapsána první položka.

Operační systém ukládá protokoly událostí jako soubory. Pokud k vytvoření nového protokolu událostí použijete EventLogInstaller nebo CreateEventSource , přidružený soubor se uloží do adresáře %SystemRoot%\System32\Config v zadaném počítači. Název souboru se nastaví připojením prvních 8 znaků Log vlastnosti k příponě názvu souboru ".evt".

Každý zdroj může zapisovat pouze do jednoho protokolu událostí najednou; aplikace však může k zápisu do více protokolů událostí použít více zdrojů. Vaše aplikace může například vyžadovat více zdrojů nakonfigurovaných pro různé protokoly událostí nebo různé soubory prostředků.

Zdroj událostí můžete zaregistrovat pomocí lokalizovaných souborů prostředků pro vaši kategorii událostí a řetězce zpráv. Vaše aplikace může zapisovat položky protokolu událostí pomocí identifikátorů prostředků, místo aby určila skutečný řetězec. Prohlížeč událostí používá identifikátor prostředku k vyhledání a zobrazení odpovídajícího řetězce z lokalizovaného souboru prostředků na základě aktuálního nastavení jazyka. Můžete zaregistrovat samostatný soubor pro kategorie událostí, zprávy a řetězce vkládání parametrů nebo můžete zaregistrovat stejný soubor prostředků pro všechny tři typy řetězců. CategoryCountPomocí vlastností , CategoryResourceFile, MessageResourceFilea ParameterResourceFile nakonfigurujte zdroj pro zápis lokalizovaných položek do protokolu událostí. Pokud vaše aplikace zapisuje hodnoty řetězců přímo do protokolu událostí, nemusíte tyto vlastnosti nastavovat.

Zdroj musí být nakonfigurován pro zápis lokalizovaných položek nebo pro zápis přímých řetězců. Pokud aplikace zapisuje položky pomocí identifikátorů prostředků i řetězcových hodnot, musíte zaregistrovat dva samostatné zdroje. Například nakonfigurujte jeden zdroj se soubory prostředků a pak tento zdroj použijte v WriteEvent metodě k zápisu položek do protokolu událostí pomocí identifikátorů prostředků. Pak vytvořte jiný zdroj bez souborů prostředků a použijte tento zdroj v WriteEntry metodě k zápisu řetězců přímo do protokolu událostí pomocí daného zdroje.

Pokud chcete změnit podrobnosti konfigurace existujícího zdroje, musíte zdroj odstranit a pak ho vytvořit s novou konfigurací. Pokud existující zdroj používají jiné aplikace nebo komponenty, místo odstranění existujícího zdroje vytvořte nový zdroj s aktualizovanou konfigurací.

Poznámka

Pokud je zdroj nakonfigurovaný pro protokol událostí a překonfigurujete ho na jiný protokol událostí, musíte restartovat počítač, aby se změny projevily.

Viz také

Platí pro

CreateEventSource(String, String)

Zdroj:
EventLog.cs
Zdroj:
EventLog.cs
Zdroj:
EventLog.cs

Vytvoří zadaný název zdroje jako platný zdroj událostí pro zápis položek do protokolu v místním počítači. Tato metoda může také vytvořit nový vlastní protokol v místním počítači.

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

Název zdroje, podle kterého je aplikace registrována v místním počítači.

logName
String

Název protokolu, do který se zapisují zdrojové položky. Mezi možné hodnoty patří aplikace, systém nebo vlastní protokol událostí.

Výjimky

source je prázdný řetězec ("") nebo null.

-nebo-

logName není platný název protokolu událostí. Názvy protokolů událostí musí obsahovat tisknutelné znaky a nesmí obsahovat znaky *, ? nebo \.

-nebo-

logName není platný pro vytvoření protokolu uživatele. Názvy protokolů událostí AppEvent, SysEvent a SecEvent jsou vyhrazené pro použití v systému.

-nebo-

Název protokolu odpovídá názvu existujícího zdroje událostí.

-nebo-

Výsledkem názvu zdroje je cesta ke klíči registru delší než 254 znaků.

-nebo-

Prvních 8 znaků odpovídá logName prvním 8 znakům existujícího názvu protokolu událostí.

-nebo-

Zdroj nelze zaregistrovat, protože již v místním počítači existuje.

-nebo-

Název zdroje odpovídá názvu existujícího protokolu událostí.

Klíč registru pro protokol událostí nelze otevřít v místním počítači.

Příklady

Následující příklad vytvoří zdroj MySource , pokud ještě neexistuje, a zapíše položku do protokolu MyNewLogudálostí .

#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

Poznámky

Toto přetížení použijte k vytvoření vlastního protokolu nebo k vytvoření a registraci Source do existujícího protokolu v místním počítači.

Pokud logName je null nebo prázdný řetězec ("") při volání CreateEventSource, protokol se ve výchozím nastavení použije k aplikačnímu protokolu. Pokud protokol v místním počítači neexistuje, systém vytvoří vlastní protokol a zaregistruje aplikaci jako Source pro tento protokol.

Poznámka

Pokud chcete vytvořit zdroj událostí v systému Windows Vista a novějším nebo Windows Serveru 2003, musíte mít oprávnění správce.

Důvodem tohoto požadavku je to, že všechny protokoly událostí, včetně zabezpečení, se musí prohledávat, aby se zjistilo, jestli je zdroj událostí jedinečný. Počínaje systémem Windows Vista uživatelé nemají oprávnění pro přístup k protokolu zabezpečení; SecurityException proto je vyvolán .

Nástroj Řízení uživatelských účtů (UAC) v systému Windows Vista a novějším určuje oprávnění uživatele. Pokud jste členem předdefinované skupiny Administrators, máte přiřazeny dva přístupové tokeny run-time: token přístupu uživatele se standardním oprávněním a token přístupu správce. Ve výchozím nastavení máte roli standardního uživatele. Pokud chcete spustit kód, který přistupuje k protokolu zabezpečení, musíte nejprve zvýšit oprávnění ze standardního uživatele na správce. Můžete to udělat při spuštění aplikace tak, že kliknete pravým tlačítkem myši na ikonu aplikace a označíte, že chcete aplikaci spustit jako správce.

Zdroj událostí potřebujete vytvořit pouze v případě, že zapisujete do protokolu událostí. Před zápisem položky do protokolu událostí musíte zaregistrovat zdroj událostí v protokolu událostí jako platný zdroj událostí. Při zápisu položky protokolu systém použije Source k vyhledání vhodného protokolu, do kterého se má položka umístit. Pokud čtete protokol událostí, můžete zadat Source, nebo Log a MachineName.

Poznámka

Pokud se připojujete k protokolu v místním počítači, není nutné zadat MachineName parametr . Pokud při čtení z protokolu nezadáte MachineName parametr , předpokládá se místní počítač (".").

K zápisu událostí do protokolu událostí použijte WriteEvent a WriteEntry . Je nutné zadat zdroj událostí pro zápis událostí; před zápisem první položky se zdrojem musíte vytvořit a nakonfigurovat zdroj událostí.

Create nový zdroj událostí během instalace aplikace. Operační systém tak může aktualizovat seznam registrovaných zdrojů událostí a jejich konfiguraci. Pokud operační systém neaktualizuje seznam zdrojů událostí a pokusíte se napsat událost s novým zdrojem, operace zápisu selže. Nový zdroj můžete nakonfigurovat pomocí EventLogInstaller, nebo pomocí CreateEventSource metody . K vytvoření nového zdroje událostí musíte mít v počítači oprávnění správce.

Můžete vytvořit zdroj událostí pro existující protokol událostí nebo nový protokol událostí. Když vytvoříte nový zdroj pro nový protokol událostí, systém zaregistruje zdroj pro tento protokol, ale protokol se nevytvoří, dokud do něj není zapsána první položka.

Operační systém ukládá protokoly událostí jako soubory. Pokud k vytvoření nového protokolu událostí použijete EventLogInstaller nebo CreateEventSource , přidružený soubor se uloží do adresáře %SystemRoot%\System32\Config v zadaném počítači. Název souboru se nastaví připojením prvních 8 znaků Log vlastnosti k příponě názvu souboru ".evt".

Zdroj musí být v místním počítači jedinečný. nový název zdroje se nemůže shodovat s existujícím názvem zdroje nebo názvem existujícího protokolu událostí. Každý zdroj může zapisovat pouze do jednoho protokolu událostí najednou; aplikace však může k zápisu do více protokolů událostí použít více zdrojů. Vaše aplikace může například vyžadovat více zdrojů nakonfigurovaných pro různé protokoly událostí nebo různé soubory prostředků.

Zdroj musí být nakonfigurován pro zápis lokalizovaných položek nebo pro zápis přímých řetězců. Pokud aplikace zapisuje položky pomocí identifikátorů prostředků i řetězcových hodnot, musíte zaregistrovat dva samostatné zdroje. Například nakonfigurujte jeden zdroj se soubory prostředků a pak tento zdroj použijte v WriteEvent metodě k zápisu položek do protokolu událostí pomocí identifikátorů prostředků. Pak vytvořte jiný zdroj bez souborů prostředků a použijte tento zdroj v WriteEntry metodě k zápisu řetězců přímo do protokolu událostí pomocí daného zdroje.

Pokud chcete změnit podrobnosti konfigurace existujícího zdroje, musíte zdroj odstranit a pak ho vytvořit s novou konfigurací. Pokud existující zdroj používají jiné aplikace nebo komponenty, místo odstranění existujícího zdroje vytvořte nový zdroj s aktualizovanou konfigurací.

Poznámka

Pokud již byl zdroj namapován na protokol a přemapujete ho na nový protokol, je nutné restartovat počítač, aby se změny projevily.

Viz také

Platí pro

CreateEventSource(String, String, String)

Zdroj:
EventLog.cs
Zdroj:
EventLog.cs
Zdroj:
EventLog.cs

Upozornění

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

Upozornění

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

Upozornění

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

Vytvoří zadaný název zdroje jako platný zdroj událostí pro zápis položek do protokolu v zadaném počítači. Tuto metodu lze také použít k vytvoření nového vlastního protokolu v zadaném počítači.

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

Zdroj, podle kterého je aplikace registrována v zadaném počítači.

logName
String

Název protokolu, do který se zapisují zdrojové položky. Mezi možné hodnoty patří aplikace, systém nebo vlastní protokol událostí. Pokud nezadáte hodnotu, logName výchozí hodnota bude Application (Aplikace).

machineName
String

Název počítače pro registraci tohoto zdroje událostí nebo "." pro místní počítač.

Atributy

Výjimky

Není machineName platný název počítače.

-nebo-

source je prázdný řetězec ("") nebo null.

-nebo-

logName není platný název protokolu událostí. Názvy protokolů událostí musí obsahovat tisknutelné znaky a nesmí obsahovat znaky *, ? nebo \.

-nebo-

logName není platný pro vytvoření protokolu uživatele. Názvy protokolů událostí AppEvent, SysEvent a SecEvent jsou vyhrazené pro použití v systému.

-nebo-

Název protokolu odpovídá názvu existujícího zdroje událostí.

-nebo-

Výsledkem názvu zdroje je cesta ke klíči registru delší než 254 znaků.

-nebo-

Prvních 8 znaků odpovídá logName prvním 8 znakům existujícího názvu protokolu událostí v zadaném počítači.

-nebo-

Zdroj nelze zaregistrovat, protože již v zadaném počítači existuje.

-nebo-

Název zdroje odpovídá existujícímu názvu zdroje událostí.

Klíč registru pro protokol událostí nelze v zadaném počítači otevřít.

Příklady

Následující příklad vytvoří zdroj MySource v počítači MyServera zapíše položku do protokolu MyNewLogudálostí .

#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

Poznámky

Toto přetížení použijte k vytvoření vlastního protokolu nebo k vytvoření a registraci Source existujícího protokolu v zadaném počítači.

Pokud logName je null nebo prázdný řetězec ("") při volání CreateEventSource, protokol se ve výchozím nastavení použije k aplikačnímu protokolu. Pokud protokol v zadaném počítači neexistuje, systém vytvoří vlastní protokol a zaregistruje aplikaci jako Source pro tento protokol.

Zdroj událostí potřebujete vytvořit pouze v případě, že zapisujete do protokolu událostí. Před zápisem položky do protokolu událostí musíte zaregistrovat zdroj událostí v protokolu událostí jako platný zdroj událostí. Při zápisu položky protokolu systém použije Source k vyhledání vhodného protokolu, do kterého se má položka umístit. Pokud čtete protokol událostí, můžete zadat Source, nebo Log a MachineName.

Poznámka

Pokud chcete vytvořit zdroj událostí v systému Windows Vista a novějším nebo Windows Serveru 2003, musíte mít oprávnění správce.

Důvodem tohoto požadavku je to, že všechny protokoly událostí, včetně zabezpečení, se musí prohledávat, aby se zjistilo, jestli je zdroj událostí jedinečný. V systému Windows Vista a novější uživatelé nemají oprávnění pro přístup k protokolu zabezpečení; SecurityException proto je vyvolán .

Nástroj Řízení uživatelských účtů (UAC) v systému Windows Vista a novějším určuje oprávnění uživatele. Pokud jste členem předdefinované skupiny Administrators, máte přiřazeny dva přístupové tokeny run-time: token přístupu uživatele se standardním oprávněním a token přístupu správce. Ve výchozím nastavení máte roli standardního uživatele. Pokud chcete spustit kód, který přistupuje k protokolu zabezpečení, musíte nejprve zvýšit oprávnění ze standardního uživatele na správce. Můžete to udělat při spuštění aplikace tak, že kliknete pravým tlačítkem myši na ikonu aplikace a označíte, že chcete aplikaci spustit jako správce.

K zápisu událostí do protokolu událostí použijte WriteEvent a WriteEntry . Je nutné zadat zdroj událostí pro zápis událostí; před zápisem první položky se zdrojem musíte vytvořit a nakonfigurovat zdroj událostí.

Create nový zdroj událostí během instalace aplikace. Operační systém tak může aktualizovat seznam registrovaných zdrojů událostí a jejich konfiguraci. Pokud operační systém neaktualizuje seznam zdrojů událostí a pokusíte se napsat událost s novým zdrojem, operace zápisu selže. Nový zdroj můžete nakonfigurovat pomocí EventLogInstaller, nebo pomocí CreateEventSource metody . K vytvoření nového zdroje událostí musíte mít v počítači oprávnění správce.

Můžete vytvořit zdroj událostí pro existující protokol událostí nebo nový protokol událostí. Když vytvoříte nový zdroj pro nový protokol událostí, systém zaregistruje zdroj pro tento protokol, ale protokol se nevytvoří, dokud do něj není zapsána první položka.

Operační systém ukládá protokoly událostí jako soubory. Pokud k vytvoření nového protokolu událostí použijete EventLogInstaller nebo CreateEventSource , přidružený soubor se uloží do adresáře %SystemRoot%\System32\Config v zadaném počítači. Název souboru se nastaví připojením prvních 8 znaků Log vlastnosti k příponě názvu souboru ".evt".

Zdroj musí být v místním počítači jedinečný. nový název zdroje se nemůže shodovat s existujícím názvem zdroje nebo názvem existujícího protokolu událostí. Každý zdroj může zapisovat pouze do jednoho protokolu událostí najednou; aplikace však může k zápisu do více protokolů událostí použít více zdrojů. Vaše aplikace může například vyžadovat více zdrojů nakonfigurovaných pro různé protokoly událostí nebo různé soubory prostředků.

Zdroj musí být nakonfigurován pro zápis lokalizovaných položek nebo pro zápis přímých řetězců. Pokud aplikace zapisuje položky pomocí identifikátorů prostředků i řetězcových hodnot, musíte zaregistrovat dva samostatné zdroje. Například nakonfigurujte jeden zdroj se soubory prostředků a pak tento zdroj použijte v WriteEvent metodě k zápisu položek do protokolu událostí pomocí identifikátorů prostředků. Pak vytvořte jiný zdroj bez souborů prostředků a použijte tento zdroj v WriteEntry metodě k zápisu řetězců přímo do protokolu událostí pomocí daného zdroje.

Pokud chcete změnit podrobnosti konfigurace existujícího zdroje, musíte zdroj odstranit a pak ho vytvořit s novou konfigurací. Pokud existující zdroj používají jiné aplikace nebo komponenty, místo odstranění existujícího zdroje vytvořte nový zdroj s aktualizovanou konfigurací.

Poznámka

Pokud již byl zdroj namapován na protokol a přemapujete ho na nový protokol, je nutné restartovat počítač, aby se změny projevily.

Viz také

Platí pro