代码之家  ›  专栏  ›  技术社区  ›  DougN

事件ID与事件查看器中显示的内容不匹配

  •  1
  • DougN  · 技术社区  · 14 年前

    系统事件日志中有一个事件,详细信息如下:

    Source: Kernel-General
    Event ID: 1
    Details: The system time has changed to ‎2010‎-‎07‎-‎17T02:58:20.285000000Z from ‎2010‎-‎07‎-‎17T02:58:20.285868600Z.
    

    问题是,当您在advapi32.dll中查找此源获取其消息的位置时,您会看到:

    ID:01000001
    String: The system time has changed to %1 from %2.
    

    事件日志查看器如何神奇地知道将这些额外的位添加到ID中以找到正确的字符串?并非所有事件字符串都有该高位,有些字符串还设置了其他高位。

    我找不到任何文件讨论这个问题(除了描述显示错误/严重性/设备/代码位的ID格式)。

    2 回复  |  直到 14 年前
        1
  •  1
  •   Brian Nixon    14 年前

    像你一样,我在任何地方都找不到它的文档,但它看起来像事件查看器映射了 EventType 委员会成员 EVENTLOGRECORD 结构到

    严重程度 %1服务已成功发送%2控件。

    严重程度 3和消息ID 0xC0001B58:

    当然,这与你的例子不太相符;你确定你的0和1放在正确的位置了吗?

        2
  •  1
  •   nannstep    6 年前

    1. 事件限定符(这可能是像Brian最初提到的那样被掩盖的严重性)
    2. Windows事件模板资源

    https://github.com/libyal/libevtx/blob/master/documentation/Windows%20XML%20Event%20Log%20(EVTX).asciidoc#message-string-identifier

    计算机\HKEY\U LOCAL\U MACHINE\SYSTEM\CurrentControlSet\Services\EventLog\SYSTEM\Microsoft Windows内核常规

    然后可以使用windows事件实用程序查看提供程序dll的内容(添加/gm:true标志将显示消息文本):

    wevtutil gp Microsoft Windows内核常规/ge:true

    输出显示带有事件任务5的事件ID 1的消息ID=16777217(0x01000001)。