EventLog.CreateEventSource Metod
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
Upprättar ett program som kan skriva händelseinformation till en viss logg i systemet.
Överlagringar
| Name | Description |
|---|---|
| CreateEventSource(EventSourceCreationData) |
Upprättar en giltig händelsekälla för att skriva lokaliserade händelsemeddelanden med hjälp av de angivna konfigurationsegenskaperna för händelsekällan och motsvarande händelselogg. |
| CreateEventSource(String, String) |
Etablerar det angivna källnamnet som en giltig händelsekälla för att skriva poster till en logg på den lokala datorn. Den här metoden kan också skapa en ny anpassad logg på den lokala datorn. |
| CreateEventSource(String, String, String) |
Föråldrad.
Etablerar det angivna källnamnet som en giltig händelsekälla för att skriva poster till en logg på den angivna datorn. Den här metoden kan också användas för att skapa en ny anpassad logg på den angivna datorn. |
CreateEventSource(EventSourceCreationData)
Upprättar en giltig händelsekälla för att skriva lokaliserade händelsemeddelanden med hjälp av de angivna konfigurationsegenskaperna för händelsekällan och motsvarande händelselogg.
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)
Parametrar
- sourceData
- EventSourceCreationData
Konfigurationsegenskaperna för händelsekällan och dess målhändelselogg.
Undantag
Datornamnet som anges i sourceData är ogiltigt.
-eller-
Källnamnet som anges i sourceData är null.
-eller-
Loggnamnet som anges i sourceData är ogiltigt. Namn på händelseloggar måste bestå av utskrivbara tecken och får inte innehålla tecknen '*', '?', eller '\'.
-eller-
Loggnamnet som anges i sourceData är inte giltigt för att skapa användarloggar. Händelseloggnamnen AppEvent, SysEvent och SecEvent är reserverade för systemanvändning.
-eller-
Loggnamnet matchar ett befintligt namn på händelsekällan.
-eller-
Källnamnet som anges i resulterar i sourceData en registernyckelsökväg som är längre än 254 tecken.
-eller-
De första 8 tecknen i loggnamnet som anges i sourceData är inte unika.
-eller-
Källnamnet som anges i sourceData är redan registrerat.
-eller-
Källnamnet som anges i sourceData matchar ett befintligt händelseloggnamn.
Det gick inte att öppna registernyckeln för händelseloggen.
sourceData är null.
Exempel
I följande exempel avgörs om händelsekällan med namnet SampleApplicationSource är registrerad på den lokala datorn. Om händelsekällan inte finns anger exemplet meddelanderesursfilen för källan och skapar den nya händelsekällan. Slutligen anger exemplet det lokaliserade visningsnamnet för händelseloggen med hjälp av resursidentifierarvärdet i DisplayNameMsgId och resursfilens sökväg i messageFile.
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
I exemplet används följande meddelandetextfil som är inbyggd i resursbiblioteket EventLogMsgs.dll. En meddelandetextfil är källan från vilken meddelanderesursfilen skapas. Meddelandetextfilen definierar resursidentifierarna och texten för strängarna kategori, händelsemeddelande och parameterinfogning. Mer specifikt definieras resursidentifieraren 5001 för händelseloggens lokaliserade namn.
; // 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
.
Kommentarer
Använd den här överlagringen för att konfigurera en ny källa för att skriva poster till en händelselogg på den lokala datorn eller en fjärrdator. Du behöver inte använda den här metoden för att läsa från en händelselogg.
Metoden CreateEventSource använder indata LogNamesourceDataSourceMachineName och egenskaper för att skapa registervärden på måldatorn för den nya källan och dess associerade händelselogg. Ett nytt källnamn kan inte matcha ett befintligt källnamn eller ett befintligt händelseloggnamn på måldatorn. Om egenskapen LogName inte har angetts registreras källan för programhändelseloggen. Om inte MachineName har angetts registreras källan på den lokala datorn.
Note
Om du vill skapa en händelsekälla i Windows Vista och senare eller Windows Server 2003 måste du ha administratörsbehörighet.
Orsaken till det här kravet är att alla händelseloggar, inklusive säkerhet, måste sökas igenom för att avgöra om händelsekällan är unik. Från och med Windows Vista har användarna inte behörighet att komma åt säkerhetsloggen. Därför utlöses en SecurityException.
Från och med Windows Vista avgör UAC (User Account Control) en användares behörigheter. Om du är medlem i gruppen Inbyggda administratörer tilldelas du två åtkomsttoken för körning: en standardåtkomsttoken för användare och en administratörsåtkomsttoken. Som standard är du i standardanvändarrollen. Om du vill köra koden som kommer åt säkerhetsloggen måste du först höja dina privilegier från standardanvändare till administratör. Du kan göra detta när du startar ett program genom att högerklicka på programikonen och ange att du vill köra som administratör.
Använd WriteEvent och WriteEntry för att skriva händelser till en händelselogg. Du måste ange en händelsekälla för att skriva händelser. du måste skapa och konfigurera händelsekällan innan du skriver den första posten med källan.
Skapa den nya händelsekällan under installationen av programmet. Detta gör det möjligt för operativsystemet att uppdatera sin lista över registrerade händelsekällor och deras konfiguration. Om operativsystemet inte har uppdaterat sin lista över händelsekällor och du försöker skriva en händelse med den nya källan misslyckas skrivåtgärden. Du kan konfigurera en ny källa med hjälp av en EventLogInstaller, eller med hjälp av CreateEventSource metoden . Du måste ha administratörsbehörighet på datorn för att kunna skapa en ny händelsekälla.
Du kan skapa en händelsekälla för en befintlig händelselogg eller en ny händelselogg. När du skapar en ny källa för en ny händelselogg registrerar systemet källan för loggen, men loggen skapas inte förrän den första posten har skrivits till den.
Operativsystemet lagrar händelseloggar som filer. När du använder EventLogInstaller eller CreateEventSource skapar en ny händelselogg lagras den associerade filen i katalogen %SystemRoot%\System32\Config på den angivna datorn. Filnamnet anges genom att de första 8 tecknen i Log egenskapen läggs till med filnamnstillägget ".evt".
Varje källa kan bara skriva till en händelselogg i taget. Ditt program kan dock använda flera källor för att skriva till flera händelseloggar. Ditt program kan till exempel kräva flera källor som konfigurerats för olika händelseloggar eller olika resursfiler.
Du kan registrera händelsekällan med lokaliserade resursfiler för din händelsekategori och meddelandesträngar. Programmet kan skriva händelseloggposter med hjälp av resursidentifierare i stället för att ange den faktiska strängen. Zobrazovač udalostí använder resursidentifieraren för att hitta och visa motsvarande sträng från den lokaliserade resursfilen baserat på aktuella språkinställningar. Du kan registrera en separat fil för händelsekategorier, meddelanden och parameterinfogningssträngar, eller så kan du registrera samma resursfil för alla tre typerna av strängar. CategoryCountAnvänd egenskaperna , CategoryResourceFile, MessageResourceFileoch ParameterResourceFile för att konfigurera källan för att skriva lokaliserade poster till händelseloggen. Om programmet skriver strängvärden direkt till händelseloggen behöver du inte ange dessa egenskaper.
Källan måste konfigureras antingen för att skriva lokaliserade poster eller för att skriva direktsträngar. Om programmet skriver poster med både resursidentifierare och strängvärden måste du registrera två separata källor. Du kan till exempel konfigurera en källa med resursfiler och sedan använda källan WriteEvent i metoden för att skriva poster med hjälp av resursidentifierare till händelseloggen. Skapa sedan en annan källa utan resursfiler och använd den WriteEntry källan i metoden för att skriva strängar direkt till händelseloggen med den källan.
Om du vill ändra konfigurationsinformationen för en befintlig källa måste du ta bort källan och sedan skapa den med den nya konfigurationen. Om andra program eller komponenter använder den befintliga källan skapar du en ny källa med den uppdaterade konfigurationen i stället för att ta bort den befintliga källan.
Note
Om en källa har konfigurerats för en händelselogg och du konfigurerar om den för en annan händelselogg måste du starta om datorn för att ändringarna ska börja gälla.
Se även
Gäller för
CreateEventSource(String, String)
Etablerar det angivna källnamnet som en giltig händelsekälla för att skriva poster till en logg på den lokala datorn. Den här metoden kan också skapa en ny anpassad logg på den lokala datorn.
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)
Parametrar
- source
- String
Källnamnet som programmet är registrerat med på den lokala datorn.
- logName
- String
Namnet på loggen som källans poster skrivs till. Möjliga värden är Program, System eller en anpassad händelselogg.
Undantag
source är en tom sträng ("") eller null.
-eller-
logName är inte ett giltigt händelseloggnamn. Namn på händelseloggar måste bestå av utskrivbara tecken och får inte innehålla tecknen '*', '?' eller '\'.
-eller-
logName är inte giltigt för att skapa användarloggar. Händelseloggnamnen AppEvent, SysEvent och SecEvent är reserverade för systemanvändning.
-eller-
Loggnamnet matchar ett befintligt namn på händelsekällan.
-eller-
Källnamnet resulterar i en registernyckelsökväg som är längre än 254 tecken.
-eller-
De första 8 tecknen logName i matchar de första 8 tecknen i ett befintligt händelseloggnamn.
-eller-
Det går inte att registrera källan eftersom den redan finns på den lokala datorn.
-eller-
Källnamnet matchar ett befintligt händelseloggnamn.
Det gick inte att öppna registernyckeln för händelseloggen på den lokala datorn.
Exempel
I följande exempel skapas källan MySource om den inte redan finns och skriver en post till händelseloggen MyNewLog.
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
Kommentarer
Använd den här överlagringen för att skapa en anpassad logg eller för att skapa och registrera en Source till en befintlig logg på den lokala datorn.
Om logName är null eller en tom sträng (""") när du anropar CreateEventSource, standardloggen till programloggen. Om loggen inte finns på den lokala datorn skapar systemet en anpassad logg och registrerar ditt program som en Source för den loggen.
Note
Om du vill skapa en händelsekälla i Windows Vista och senare eller Windows Server 2003 måste du ha administratörsbehörighet.
Orsaken till det här kravet är att alla händelseloggar, inklusive säkerhet, måste sökas igenom för att avgöra om händelsekällan är unik. Från och med Windows Vista har användarna inte behörighet att komma åt säkerhetsloggen. Därför utlöses en SecurityException.
I Windows Vista och senare bestämmer UAC (User Account Control) en användares behörigheter. Om du är medlem i gruppen Inbyggda administratörer tilldelas du två åtkomsttoken för körning: en standardåtkomsttoken för användare och en administratörsåtkomsttoken. Som standard är du i standardanvändarrollen. Om du vill köra koden som kommer åt säkerhetsloggen måste du först höja dina privilegier från standardanvändare till administratör. Du kan göra detta när du startar ett program genom att högerklicka på programikonen och ange att du vill köra som administratör.
Du behöver bara skapa en händelsekälla om du skriver till händelseloggen. Innan du skriver en post till en händelselogg måste du registrera händelsekällan med händelseloggen som en giltig händelsekälla. När du skriver en loggpost använder Source systemet för att hitta lämplig logg där posten ska placeras. Om du läser händelseloggen kan du antingen ange Source, eller a Log och MachineName.
Note
Du behöver inte ange MachineName om du ansluter till en logg på den lokala datorn. Om du inte anger MachineName när du läser från en logg antas den lokala datorn (".").
Använd WriteEvent och WriteEntry för att skriva händelser till en händelselogg. Du måste ange en händelsekälla för att skriva händelser. du måste skapa och konfigurera händelsekällan innan du skriver den första posten med källan.
Skapa den nya händelsekällan under installationen av programmet. Detta gör det möjligt för operativsystemet att uppdatera sin lista över registrerade händelsekällor och deras konfiguration. Om operativsystemet inte har uppdaterat sin lista över händelsekällor och du försöker skriva en händelse med den nya källan misslyckas skrivåtgärden. Du kan konfigurera en ny källa med hjälp av en EventLogInstaller, eller med hjälp av CreateEventSource metoden . Du måste ha administratörsbehörighet på datorn för att kunna skapa en ny händelsekälla.
Du kan skapa en händelsekälla för en befintlig händelselogg eller en ny händelselogg. När du skapar en ny källa för en ny händelselogg registrerar systemet källan för loggen, men loggen skapas inte förrän den första posten har skrivits till den.
Operativsystemet lagrar händelseloggar som filer. När du använder EventLogInstaller eller CreateEventSource skapar en ny händelselogg lagras den associerade filen i katalogen %SystemRoot%\System32\Config på den angivna datorn. Filnamnet anges genom att de första 8 tecknen i Log egenskapen läggs till med filnamnstillägget ".evt".
Källan måste vara unik på den lokala datorn. Ett nytt källnamn kan inte matcha ett befintligt källnamn eller ett befintligt händelseloggnamn. Varje källa kan bara skriva till en händelselogg i taget. Ditt program kan dock använda flera källor för att skriva till flera händelseloggar. Ditt program kan till exempel kräva flera källor som konfigurerats för olika händelseloggar eller olika resursfiler.
Källan måste konfigureras antingen för att skriva lokaliserade poster eller för att skriva direktsträngar. Om programmet skriver poster med både resursidentifierare och strängvärden måste du registrera två separata källor. Du kan till exempel konfigurera en källa med resursfiler och sedan använda källan WriteEvent i metoden för att skriva poster med hjälp av resursidentifierare till händelseloggen. Skapa sedan en annan källa utan resursfiler och använd den WriteEntry källan i metoden för att skriva strängar direkt till händelseloggen med den källan.
Om du vill ändra konfigurationsinformationen för en befintlig källa måste du ta bort källan och sedan skapa den med den nya konfigurationen. Om andra program eller komponenter använder den befintliga källan skapar du en ny källa med den uppdaterade konfigurationen i stället för att ta bort den befintliga källan.
Note
Om en källa redan har mappats till en logg och du mappar om den till en ny logg måste du starta om datorn för att ändringarna ska börja gälla.
Se även
Gäller för
CreateEventSource(String, String, String)
Varning
This method has been deprecated. Please use System.Diagnostics.EventLog.CreateEventSource(EventSourceCreationData sourceData) instead. http://go.microsoft.com/fwlink/?linkid=14202
Etablerar det angivna källnamnet som en giltig händelsekälla för att skriva poster till en logg på den angivna datorn. Den här metoden kan också användas för att skapa en ny anpassad logg på den angivna datorn.
public:
static void CreateEventSource(System::String ^ source, System::String ^ logName, System::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);
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
Public Shared Sub CreateEventSource (source As String, logName As String, machineName As String)
Parametrar
- source
- String
Källan som programmet är registrerat med på den angivna datorn.
- logName
- String
Namnet på loggen som källans poster skrivs till. Möjliga värden är Program, System eller en anpassad händelselogg. Om du inte anger något värde är logName standardvärdet Program.
- machineName
- String
Namnet på den dator som händelsekällan ska registreras med, eller "." för den lokala datorn.
- Attribut
Undantag
machineName är inte ett giltigt datornamn.
-eller-
source är en tom sträng ("") eller null.
-eller-
logName är inte ett giltigt händelseloggnamn. Namn på händelseloggar måste bestå av utskrivbara tecken och får inte innehålla tecknen '*', '?' eller '\'.
-eller-
logName är inte giltigt för att skapa användarloggar. Händelseloggnamnen AppEvent, SysEvent och SecEvent är reserverade för systemanvändning.
-eller-
Loggnamnet matchar ett befintligt namn på händelsekällan.
-eller-
Källnamnet resulterar i en registernyckelsökväg som är längre än 254 tecken.
-eller-
De första 8 tecknen logName i matchar de första 8 tecknen i ett befintligt händelseloggnamn på den angivna datorn.
-eller-
Det går inte att registrera källan eftersom den redan finns på den angivna datorn.
-eller-
Källnamnet matchar ett befintligt namn på händelsekällan.
Det gick inte att öppna registernyckeln för händelseloggen på den angivna datorn.
Kommentarer
Använd den här överlagringen för att skapa en anpassad logg eller för att skapa och registrera en Source till en befintlig logg på den angivna datorn.
Om logName är null eller en tom sträng (""") när du anropar CreateEventSource, standardloggen till programloggen. Om loggen inte finns på den angivna datorn skapar systemet en anpassad logg och registrerar ditt program som en Source för den loggen.
Du behöver bara skapa en händelsekälla om du skriver till händelseloggen. Innan du skriver en post till en händelselogg måste du registrera händelsekällan med händelseloggen som en giltig händelsekälla. När du skriver en loggpost använder Source systemet för att hitta lämplig logg där posten ska placeras. Om du läser händelseloggen kan du antingen ange Source, eller a Log och MachineName.
Note
Om du vill skapa en händelsekälla i Windows Vista och senare eller Windows Server 2003 måste du ha administratörsbehörighet.
Orsaken till det här kravet är att alla händelseloggar, inklusive säkerhet, måste sökas igenom för att avgöra om händelsekällan är unik. I Windows Vista och senare har användarna inte behörighet att komma åt säkerhetsloggen. Därför genereras en SecurityException.
I Windows Vista och senare bestämmer UAC (User Account Control) en användares behörigheter. Om du är medlem i gruppen Inbyggda administratörer tilldelas du två åtkomsttoken för körning: en standardåtkomsttoken för användare och en administratörsåtkomsttoken. Som standard är du i standardanvändarrollen. Om du vill köra koden som kommer åt säkerhetsloggen måste du först höja dina privilegier från standardanvändare till administratör. Du kan göra detta när du startar ett program genom att högerklicka på programikonen och ange att du vill köra som administratör.
Använd WriteEvent och WriteEntry för att skriva händelser till en händelselogg. Du måste ange en händelsekälla för att skriva händelser. du måste skapa och konfigurera händelsekällan innan du skriver den första posten med källan.
Skapa den nya händelsekällan under installationen av programmet. Detta gör det möjligt för operativsystemet att uppdatera sin lista över registrerade händelsekällor och deras konfiguration. Om operativsystemet inte har uppdaterat sin lista över händelsekällor och du försöker skriva en händelse med den nya källan misslyckas skrivåtgärden. Du kan konfigurera en ny källa med hjälp av en EventLogInstaller, eller med hjälp av CreateEventSource metoden . Du måste ha administratörsbehörighet på datorn för att kunna skapa en ny händelsekälla.
Du kan skapa en händelsekälla för en befintlig händelselogg eller en ny händelselogg. När du skapar en ny källa för en ny händelselogg registrerar systemet källan för loggen, men loggen skapas inte förrän den första posten har skrivits till den.
Operativsystemet lagrar händelseloggar som filer. När du använder EventLogInstaller eller CreateEventSource skapar en ny händelselogg lagras den associerade filen i katalogen %SystemRoot%\System32\Config på den angivna datorn. Filnamnet anges genom att de första 8 tecknen i Log egenskapen läggs till med filnamnstillägget ".evt".
Källan måste vara unik på den lokala datorn. Ett nytt källnamn kan inte matcha ett befintligt källnamn eller ett befintligt händelseloggnamn. Varje källa kan bara skriva till en händelselogg i taget. Ditt program kan dock använda flera källor för att skriva till flera händelseloggar. Ditt program kan till exempel kräva flera källor som konfigurerats för olika händelseloggar eller olika resursfiler.
Källan måste konfigureras antingen för att skriva lokaliserade poster eller för att skriva direktsträngar. Om programmet skriver poster med både resursidentifierare och strängvärden måste du registrera två separata källor. Du kan till exempel konfigurera en källa med resursfiler och sedan använda källan WriteEvent i metoden för att skriva poster med hjälp av resursidentifierare till händelseloggen. Skapa sedan en annan källa utan resursfiler och använd den WriteEntry källan i metoden för att skriva strängar direkt till händelseloggen med den källan.
Om du vill ändra konfigurationsinformationen för en befintlig källa måste du ta bort källan och sedan skapa den med den nya konfigurationen. Om andra program eller komponenter använder den befintliga källan skapar du en ny källa med den uppdaterade konfigurationen i stället för att ta bort den befintliga källan.
Note
Om en källa redan har mappats till en logg och du mappar om den till en ny logg måste du starta om datorn för att ändringarna ska börja gälla.