EventLog.SourceExists Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Выполняет поиск заданного источника событий в реестре компьютера.
Перегрузки
SourceExists(String) |
Определяет, зарегистрирован ли источник событий на локальном компьютере. |
SourceExists(String, String) |
Определяет, зарегистрирован ли источник событий на указанном компьютере. |
SourceExists(String)
- Исходный код:
- EventLog.cs
- Исходный код:
- EventLog.cs
- Исходный код:
- EventLog.cs
Определяет, зарегистрирован ли источник событий на локальном компьютере.
public:
static bool SourceExists(System::String ^ source);
public static bool SourceExists (string source);
static member SourceExists : string -> bool
Public Shared Function SourceExists (source As String) As Boolean
Параметры
- source
- String
Имя источника событий.
Возвращаемое значение
Значение true
, если источник событий зарегистрирован на локальном компьютере; в противном случае — false
.
Исключения
source
не найден, но поиск некоторых или всех журналов событий не был произведен.
Примеры
В следующем примере создается источник MySource
, если он еще не существует, и записывается запись в журнал MyNewLog
событий .
#using <System.dll>
using namespace System;
using namespace System::Diagnostics;
using namespace System::Threading;
int main()
{
// Create the source, if it does not already exist.
if ( !EventLog::SourceExists( "MySource" ) )
{
EventLog::CreateEventSource( "MySource", "MyNewLog" );
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"))
{
// 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");
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.");
}
}
Option Explicit
Option Strict
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") Then
EventLog.CreateEventSource("MySource", "MyNewLog")
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
Комментарии
Используйте этот метод, чтобы определить, существует ли источник событий на локальном компьютере. Если вы хотите определить, существует ли журнал на локальном компьютере, используйте .Exists
Так как этот метод обращается к реестру, необходимо иметь соответствующие разрешения реестра на локальном компьютере. SecurityException В противном случае будет создано исключение .
Примечание
Для поиска источника событий в Windows Vista и более поздних версиях или Windows Server 2003 необходимо иметь права администратора.
Это требование заключается в том, что все журналы событий, включая безопасность, должны выполняться поиск, чтобы определить, является ли источник событий уникальным. Начиная с Windows Vista, у пользователей нет разрешения на доступ к журналу безопасности; поэтому возникает SecurityException исключение .
Начиная с Windows Vista контроль учетных записей (UAC) определяет привилегии пользователя. Члену встроенной группы "Администраторы" присваивается два маркера доступа на время выполнения: маркер доступа обычного пользователя и маркер доступа администратора. По умолчанию назначена роль обычного пользователя. Чтобы выполнить код, который обращается к счетчикам производительности, необходимо сначала повысить привилегии от обычного пользователя до администратора. Это можно сделать при запуске приложения, , щелкнув значок приложения правой кнопкой мыши и указав, что приложение должно запускаться от имени администратора.
Примечание
Служба, которая выполняется под учетной записью LocalSystem , не имеет привилегий, необходимых для выполнения этого метода. Решение заключается в том, чтобы проверка, существует ли источник события в ServiceInstaller, и, если он не существует, создать источник в установщике.
Так как вы не можете присвоить новому источнику имя существующего источника на том же компьютере, используйте этот метод перед попыткой вызова CreateEventSource , чтобы убедиться, что источник с именем, указанным параметром, еще не существует на локальном source
компьютере. В параметре source
регистр не учитывается.
См. также раздел
Применяется к
SourceExists(String, String)
- Исходный код:
- EventLog.cs
- Исходный код:
- EventLog.cs
- Исходный код:
- EventLog.cs
Определяет, зарегистрирован ли источник событий на указанном компьютере.
public:
static bool SourceExists(System::String ^ source, System::String ^ machineName);
public static bool SourceExists (string source, string machineName);
static member SourceExists : string * string -> bool
Public Shared Function SourceExists (source As String, machineName As String) As Boolean
Параметры
- source
- String
Имя источника событий.
- machineName
- String
Имя компьютера, на котором выполняется поиск, или значение ".", если используется локальный компьютер.
Возвращаемое значение
Значение true
, если источник событий зарегистрирован на заданном компьютере; в противном случае — значение false
Исключения
Значение параметра machineName
не является допустимым именем компьютера.
source
не найден, но поиск некоторых или всех журналов событий не был произведен.
Примеры
В следующем примере создается источник MySource
на компьютере MyServer
и записывается запись в журнал MyNewLog
событий .
#using <System.dll>
using namespace System;
using namespace System::Diagnostics;
using namespace System::Threading;
int main()
{
// Create the source, if it does not already exist.
if ( !EventLog::SourceExists( "MySource", "MyServer" ) )
{
EventLog::CreateEventSource( "MySource", "MyNewLog", "MyServer" );
Console::WriteLine( "CreatingEventSource" );
}
// Create an EventLog instance and assign its source.
EventLog^ myLog = gcnew EventLog;
myLog->Source = "MySource";
// Write an informational entry to the event log.
myLog->WriteEntry( "Writing to event log." );
Console::WriteLine( "Message written to event log." );
}
using System;
using System.Diagnostics;
using System.Threading;
class MySample{
public static void Main(){
// Create the source, if it does not already exist.
if(!EventLog.SourceExists("MySource", "MyServer"))
{
// An event log source should not be created and immediately used.
// There is a latency time to enable the source, it should be created
// prior to executing the application that uses the source.
// Execute this sample a second time to use the new source.
EventLog.CreateEventSource("MySource", "MyNewLog", "MyServer");
Console.WriteLine("CreatingEventSource");
Console.WriteLine("Exiting, execute the application a second time to use the source.");
// The source is created. Exit the application to allow it to be registered.
return;
}
// Create an EventLog instance and assign its source.
EventLog myLog = new EventLog();
myLog.Source = "MySource";
// Write an informational entry to the event log.
myLog.WriteEntry("Writing to event log.");
Console.WriteLine("Message written to event log.");
}
}
Imports System.Diagnostics
Imports System.Threading
Class MySample
Public Shared Sub Main()
' Create the source, if it does not already exist.
If Not EventLog.SourceExists("MySource", "MyServer") Then
EventLog.CreateEventSource("MySource", "MyNewLog", "MyServer")
Console.WriteLine("CreatingEventSource")
End If
' Create an EventLog instance and assign its source.
Dim myLog As New EventLog()
myLog.Source = "MySource"
' Write an informational entry to the event log.
myLog.WriteEntry("Writing to event log.")
Console.WriteLine("Message written to event log.")
End Sub
End Class
Комментарии
Используйте этот метод, чтобы определить, существует ли источник событий на компьютере, указанном параметром machineName
. Если вы хотите определить, существует ли журнал на указанном компьютере, используйте .Exists
Так как этот метод обращается к реестру, необходимо иметь соответствующие разрешения реестра на данном сервере. SecurityException В противном случае будет создано исключение .
Примечание
Для поиска источника событий в Windows Vista и более поздних версиях или Windows Server 2003 необходимо иметь права администратора.
Это требование заключается в том, что все журналы событий, включая безопасность, должны выполняться поиск, чтобы определить, является ли источник событий уникальным. Начиная с Windows Vista, у пользователей нет разрешения на доступ к журналу безопасности; поэтому возникает SecurityException исключение .
Начиная с Windows Vista контроль учетных записей (UAC) определяет привилегии пользователя. Члену встроенной группы "Администраторы" присваивается два маркера доступа на время выполнения: маркер доступа обычного пользователя и маркер доступа администратора. По умолчанию назначена роль обычного пользователя. Чтобы выполнить код, который обращается к счетчикам производительности, необходимо сначала повысить привилегии от обычного пользователя до администратора. Это можно сделать при запуске приложения, , щелкнув значок приложения правой кнопкой мыши и указав, что приложение должно запускаться от имени администратора.
Примечание
Служба, которая выполняется под учетной записью LocalSystem , не имеет привилегий, необходимых для выполнения этого метода. Решение заключается в том, чтобы проверка, существует ли источник события в ServiceInstaller, и, если он не существует, создать источник в установщике.
Так как вы не можете присвоить новому источнику имя существующего источника на том же компьютере, используйте этот метод перед попыткой вызова CreateEventSource , чтобы убедиться, что источник с именем, указанным параметром source
, еще не существует на компьютере. Параметры source
и machineName
не чувствительны к регистру.
SourceExistsstatic
— это метод, поэтому его можно вызвать в самом классе. Нет необходимости создавать экземпляр для EventLog вызова SourceExists.