The topic you requested is included in another documentation set. For convenience, it's displayed below. Choose Switch to see the topic in its original location.

EventLog.SourceExists Method (String, String)

Determines whether an event source is registered on a specified computer.

Namespace: System.Diagnostics
Assembly: System (in system.dll)

public static bool SourceExists (
	string source,
	string machineName
public static boolean SourceExists (
	String source, 
	String machineName
public static function SourceExists (
	source : String, 
	machineName : String
) : boolean
Not applicable.



The name of the event source.


The name the computer on which to look, or "." for the local computer.

Return Value

true if the event source is registered on the given computer; otherwise, false.

Exception typeCondition


machineName is an invalid computer name.


source was not found, but some or all of the event logs could not be searched.

Use this method to determine whether an event source exists on the computer specified by the machineName parameter. If you want to determine whether a log exists on the specified computer, use Exists.

Because this method accesses the registry, you must have the appropriate registry permissions on the given server; otherwise, a SecurityException will be thrown.


To search for an event source in Windows Vista, Windows XP Professional, or Windows Server 2003, you must have administrative privileges.

The reason for this requirement is that all event logs, including security, must be searched to determine whether the event source is unique. In Windows Vista, users do not have permission to access the security log; therefore, a SecurityException is thrown.

In Windows Vista, User Account Control (UAC) determines the privileges of a user. If you are a member of the Built-in Administrators group, you are assigned two run-time access tokens: a standard user access token and an administrator access token. By default, you are in the standard user role. To execute the code that accesses performance counters, you must first elevate your privileges from standard user to administrator. You can do this when you start an application by right-clicking the application icon and indicating that you want to run as an administrator.


A service that is executing under the LocalSystem account does not have the privileges required to execute this method. The solution is to check whether the event source exists in the ServiceInstaller, and if it does not exist, to create the source in the installer.

Because you cannot give a new source the name of an existing source on the same computer, use this method before attempting to call CreateEventSource to ensure that a source with the name specified by source does not already exist on the computer. The source and machineName parameters are not case sensitive.

SourceExists is a static method, so it can be called on the class itself. It is not necessary to create an instance of EventLog to call SourceExists.

The following example creates the source MySource on the computer MyServer, and writes an entry to the event log 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", "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("Exiting, execute the application a second time to use the source.");
            // The source is created.  Exit the application to allow it to be registered.
        // 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.");                                                                        

import System.*;
import System.Diagnostics.*;
import System.Threading.*;

class MySample
    public static void main(String[] args)
        // Create the source, if it does not already exist.
        if (!(EventLog.SourceExists("MySource", "MyServer"))) {
            EventLog.CreateEventSource("MySource", "MyNewLog", "MyServer");

        // Create an EventLog instance and assign its source.
        EventLog myLog = new EventLog();

        // Write an informational entry to the event log.    
        myLog.WriteEntry("Writing to event log.");
        Console.WriteLine("Message written to event log.");
    } //main
} //MySample

Windows Server 2000 SP4, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

The Microsoft .NET Framework 3.0 is supported on Windows Vista, Microsoft Windows XP SP2, and Windows Server 2003 SP1.

.NET Framework

Supported in: 3.0, 2.0, 1.1, 1.0
Was this page helpful?
(1500 characters remaining)
Thank you for your feedback

Community Additions

© 2014 Microsoft