事件源

事件日志键中的每个日志都包含名为事件源的子项。 事件源是记录事件的软件的名称。 如果应用程序很大,它通常是应用程序的名称或应用程序的子组件的名称。 最多可以向注册表添加 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 的事件源。 如果应用程序使用源名称为 Application、SQL 或 Excel 的 RegisterEventSourceOpenEventLog ,则事件日志记录服务将返回 应用程序 日志的句柄。

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