EventLog.SourceExists 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
在计算机的注册表中搜索给定的事件源。
重载
SourceExists(String) |
确定事件源是否已在本地计算机上注册。 |
SourceExists(String, String) |
确定事件源是否已在指定的计算机上注册。 |
SourceExists(String)
- Source:
- EventLog.cs
- Source:
- EventLog.cs
- Source:
- 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) 确定用户的权限。 如果您是内置的 Administrators 组的成员,将为您分配两个运行时访问令牌:一个标准用户访问令牌和一个管理员访问令牌。 默认情况下,您拥有标准用户角色。 若要执行访问性能计数器的代码,必须先将权限从标准用户提升为管理员。 你可以通过以下方式执行此操作:右键单击应用程序图标并指示需以管理员身份运行。
注意
在帐户下 LocalSystem 执行的服务没有执行此方法所需的权限。 解决方法是检查 事件源是否存在于 中ServiceInstaller,如果不存在,则在安装程序中创建源。
由于无法为新源指定同一计算机上现有源的名称,因此请在尝试调用 CreateEventSource 之前使用此方法,以确保本地计算机上尚不存在具有 指定 source
名称的源。 参数 source
不区分大小写。
另请参阅
适用于
SourceExists(String, String)
- Source:
- EventLog.cs
- Source:
- EventLog.cs
- Source:
- 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
,并将一个条目写入事件日志 MyNewLog
。MyServer
#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) 确定用户的权限。 如果您是内置的 Administrators 组的成员,将为您分配两个运行时访问令牌:一个标准用户访问令牌和一个管理员访问令牌。 默认情况下,您拥有标准用户角色。 若要执行访问性能计数器的代码,必须先将权限从标准用户提升为管理员。 你可以通过以下方式执行此操作:右键单击应用程序图标并指示需以管理员身份运行。
注意
在帐户下 LocalSystem 执行的服务没有执行此方法所需的权限。 解决方法是检查 事件源是否存在于 中ServiceInstaller,如果不存在,则在安装程序中创建源。
由于无法为新源指定同一计算机上的现有源的名称,因此请在尝试调用 CreateEventSource 之前使用此方法,以确保计算机上不存在具有 指定 source
名称的源。 source
和 machineName
参数不区分大小写。
SourceExists 是一个 static
方法,因此可以在类本身上调用它。 无需创建 的实例 EventLog 来调用 SourceExists。