You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

解决Windows自定义事件日志无法按目录层级显示的问题

解决Windows自定义嵌套事件日志不显示为子项的问题

1. 修正XML配置的核心逻辑

OpenSSH的嵌套日志结构依赖通道定义中的Parent属性实现,而非直接在日志名称中添加斜杠。你需要调整XML配置的关键字段:

  • 提供者(Provider):确保使用全新生成的GUID(不要复用OpenSSH的),且提供者名称唯一
  • 通道(Channel):
    必须分别定义父通道和子通道,通过parent属性建立关联,示例结构如下:
    <channels>
      <!-- 定义父日志通道 -->
      <channel name="SomeTest" type="Admin" enabled="true">
        <messageFileName>%SystemRoot%\system32\wevtapi.dll</messageFileName>
        <message>$(string.SomeTest.Channel)</message>
      </channel>
      <!-- 定义子日志通道,通过parent关联父通道 -->
      <channel name="YourCustomLog" type="Admin" enabled="true" parent="SomeTest">
        <messageFileName>你的消息文件路径(或使用wevtapi.dll)</messageFileName>
        <message>$(string.YourCustomLog.Channel)</message>
      </channel>
    </channels>
    
    注意:若父日志通道未提前定义,子日志无法正常嵌套显示。

2. 清理冲突的注册表残留项

之前手动添加的注册表项会与wevtutil安装的配置冲突,需彻底清理:

  • 打开注册表编辑器,定位到HKLM\SYSTEM\CurrentControlSet\Services\EventLog,删除与SomeTest及自定义日志相关的所有项
  • 再定位到HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\WINEVT\Channels,删除对应残留的通道配置项

3. 重新执行wevtutil安装流程

  • 先卸载旧配置(若之前安装过):
    wevtutil um 你的配置文件名.xml
    
  • 再重新安装配置:
    wevtutil im 你的配置文件名.xml
    
  • 验证配置是否生效:
    wevtutil gl YourCustomLog
    
    查看输出中的Parent字段是否为SomeTest,确认关联关系正确。

4. 刷新事件日志视图

  • 重启Event Log服务:
    net stop EventLog && net start EventLog
    
  • 关闭事件查看器后重新打开,右键点击「事件查看器本地」选择刷新,确保配置加载完成。若仍不显示,尝试重启系统彻底生效。

5. 检查消息文件与资源字符串

如果使用了自定义消息文件(而非系统默认的wevtapi.dll):

  • 确保消息文件已通过mc.exe和rc.exe正确编译
  • 验证文件路径配置正确,且系统账户有权限访问
  • 确认XML中引用的资源字符串(如$(string.SomeTest.Channel))在消息文件中已正确定义

常见误区提醒

  • 不要直接在通道名称中使用斜杠,Windows事件日志的嵌套仅通过Parent属性实现
  • 手动修改注册表会破坏wevtutil的配置管理逻辑,必须清理残留后重新安装
  • 提供者GUID必须唯一,避免与系统内置或已安装的其他日志提供者冲突

内容的提问来源于stack exchange,提问作者Vsevolod

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 00:16:08