事件日志记录管理信息存储在配置数据库的服务密钥中,可以由系统管理员进行修改。
配置信息的结构如下:
HKEY_LOCAL_MACHINE
SYSTEM
CurrentControlSet
服务
EventLog
应用
安全
系统
EventLog键包含几个子项,称为【日志文件】.默认日志文件为应用,安全和系统.每个日志文件子项可以包含称为【来源】的子项。您不能使用用作日志文件名的源名称,源名称不应该是分层的。(反斜杠字符[\]不能在注册表项中使用。)每个源条目都包含特定于事件源的信息,如下表所示。
值 | 描述 |
EventMessageFile | 指定事件标识符消息文件的路径。该值的类型为REG_EXPAND_SZ。 |
CategoryMessageFile | 指定类别消息文件的路径。事件类别和事件标识符消息字符串可以在同一个文件中。该值的类型为REG_EXPAND_SZ。 |
ParameterMessageFile | 指定事件源参数消息文件的路径。该文件包含要插入事件描述字符串的独立于语言的字符串。您可以对参数,类别和事件标识符消息字符串使用相同的消息文件。该值的类型为REG_EXPAND_SZ。 |
CategoryCount | 指定支持的类??别数。该值的类型为REG_DWORD。 |
TypesSupported | 指定支持的类??型的位掩码。该值的类型为REG_DWORD。 |
当应用程序使用RegisterEventSource或OpenEventLog函数获取事件日志的句柄时,事件记录服务将在注册表中搜索指定的源名称。例如,应用日志文件可能已配置Microsoft SQL Server和Microsoft Excel的源。如果应用程序使用源代码为Application,SQL或Excel的RegisterEventSource或OpenEventLog,事件记录服务会返回应用日志文件的句柄。
应用程序可以使用应用事件日志,而不向注册表添加新的源代码。如果应用程序调用{??989796063},传递在注册表中找不到的源名称,则事件记录服务默认使用应用日志文件。但是,由于没有消息或类别字符串文件,事件查看器将无法将事件标识符或类别映射到替换字符串。因此,建议的过程是将应用程序的唯一源名称添加到注册表。这允许您为事件中的事件标识符和类别指定消息文件。应用程序和服务应将其源名称添加到应用日志文件中。设备驱动程序应将其源名称添加到系统日志文件中。
事件查看器应用程序使用OpenEventLog函数打开事件源的事件日志。事件查看器可以使用ReadEventLog函数从日志中读取事件记录。ReadEventLog返回一个包含EVENTLOGRECORD结构的缓冲区和描述已记录事件的其他信息。EventID的EventID成员是源的事件消息文件中的描述字符串的标识符。事件查看器使用LoadLibrary函数来加载由源的EventMessageFile注册表值指示的文件。然后,查看器使用FormatMessage函数从加载的模块中检索描述字符串。
描述字符串可能包含插入字符串占位符,例如%【n】,其中%1表示第一个插入字符串,依此类推。在这种情况下,由ReadEventLog返回的缓冲区包含插入字符串。EVENTLOGRECORD的NumStrings成员表示插入字符串数。StringOffset的StringOffset成员指示缓冲区中第一个插入字符串的位置。
插入字符串还可以包含形式为%% 【n】的占位符,其中【n】是源参数消息文件中字符串的标识符。在这种情况下,事件查看器使用LoadLibrary和FormatMessage从源的ParameterMessageFile注册表值指示的文件中检索插入字符串。
有关使用注册表的更多信息,请参阅注册处.有关创建和使用消息文件的更多信息,请参阅消息编译器文档。