事件源

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