事件源

Eventlog 密钥 中的每个日志都包含 事件源的子项。 事件源是记录事件的软件的名称。 应用程序的名称通常是应用程序的名称,或者应用程序子组件的名称(如果应用程序很大)。 最多可以向注册表添加 16,384 个事件源。 安全 日志仅用于系统使用。 设备驱动程序应将其名称添加到 系统 日志。 应用程序和服务应将其名称添加到 应用程序 日志或创建自定义日志。

事件源的结构如下所示:

HKEY_LOCAL_MACHINE
   SYSTEM
      CurrentControlSet
         Services
            EventLog
               Application
                  AppName
               Security
               System
                  DriverName
               CustomLog
                  AppName

不能使用已用作日志名称的源名称。 此外,源名称不能分层;也就是说,它们不能包含反斜杠字符(“\”)。

每个事件源都包含特定于将记录事件的软件的信息(如 消息文件),如下表所示。

注册表值 描述
CategoryCount 支持的事件类别数。 此值的类型为 REG_DWORD
CategoryMessageFile 类别消息文件的路径。 类别消息文件包含描述类别的语言相关字符串。 此值可以是类型 REG_SZREG_EXPAND_SZ
EventMessageFile 一个或多个事件消息文件的路径;使用分号分隔多个文件。 事件消息文件包含描述事件的依赖语言的字符串。 此值可以是类型 REG_SZREG_EXPAND_SZ
ParameterMessageFile 参数消息文件的路径。 参数消息文件包含要插入到事件说明字符串中的与语言无关的字符串。 此值可以是类型 REG_SZREG_EXPAND_SZ
TypesSupported 支持的类型的位掩码。 此值的类型为 REG_DWORD。 它可以是以下一个或多个值:
EVENTLOG_AUDIT_FAILURE(0x0010)
EVENTLOG_AUDIT_SUCCESS (0x0008)
EVENTLOG_ERROR_TYPE(0x0001)
EVENTLOG_INFORMATION_TYPE(0x0004)
EVENTLOG_WARNING_TYPE(0x0002)

 

当应用程序使用 RegisterEventSourceOpenEventLog 函数获取事件日志的句柄时,事件日志记录服务将在注册表中搜索指定的事件源。 例如,应用程序 日志可能包含Microsoft SQL Server 和 Microsoft Excel 的事件源。 如果应用程序使用 RegisterEventSourceOpenEventLog,且源名称为 Application、SQL 或 Excel,则事件日志记录服务将返回 应用程序 日志的句柄。

应用程序可以使用 应用程序 日志,而无需向注册表添加新的事件源。 如果应用程序调用 RegisterEventSource 并传递在注册表中找不到的源名称,则事件日志记录服务默认使用 Application 日志。 但是,由于没有消息文件,事件查看器无法将任何事件标识符或事件类别映射到说明字符串,并且将显示错误。 因此,应将唯一事件源添加到应用程序的注册表中,并指定消息文件。