【问题标题】:EventSource, manifests, EventViewer & WS 2008 R2事件源、清单、事件查看器和 WS 2008 R2
【发布时间】:2016-03-17 12:07:43
【问题描述】:

我有一个使用Channel = EventChannel.AdminMicrosoft.Diagnostics.Tracking.EventSourceresulting manifest 在我尝试过的两台 W7 机器上安装并运行良好,但是在 2008 R2 上,当我在 EventViewer 中深入研究时,我得到了 MMC 管理单元错误,我可以看到事件未被“识别”(“无法找到描述 blabla...”)。

奇怪的是,如果我卸载清单,EventViewer 可以毫无例外地打开事件文件(尽管仍然找不到正确的描述)。

EventSource 清单文件是否存在特定于操作系统的内容?

任何我应该搜索的方向指针?

【问题讨论】:

    标签: .net windows-server-2008-r2 event-viewer ms-tracing-eventsource


    【解决方案1】:

    这里的关键问题是您如何注册清单。请注意,事件查看器实际上并不知道如何读取清单。当您使用 wevtutil 注册清单时,它主要只是添加注册表项。注册表项应该具有 DLL 的完整路径,并且 DLL 应该包含已编译的清单数据。如果您没有将编译后的清单数据添加到 DLL,或者您在注册清单时没有提供 DLL 的完整路径,事件查看器将无法找到它需要的数据。

    过去版本的 wevtutil 并没有很好地在您错误地执行此操作时警告您。我认为较新的版本(例如 Windows 10)正在变得更好。

    【讨论】:

    • 问题是,我很确定我确实提供了必要的数据等。我想我可以从检查注册表开始,但是从那里......清单是自动生成的Microsoft.Diagnostics.Tracing
    • 我的意思是,您使用什么命令来注册您的清单?我假设你使用了 wevtutil.exe。您是否编译了清单,将生成的资源链接到您的 DLL,并在您的 wevtutil.exe 命令行中包含该 DLL 的完整路径?
    • "%windir%\System32\wevtutil.exe" im "%~dp0Manifest.man" /rf:"%~dp0Manifest.dll" /mf:"%~dp0Manifest.dll""
    • 不幸的是,我不知道为什么这对你不起作用。假设您的 DLL 中编译了适当的资源(包含事件解码信息的“WEVT_TEMPLATE”资源和包含字符串的“11”资源),并且它位于您所说的位置(即假设 DLL 是存在于运行批处理文件的位置),并假设事件查看器工具有权访问该目录,它应该可以工作。不幸的是,我猜不出问题出在哪里。
    • 感谢您的尝试。我也在尝试另一种方法 (stackoverflow.com/questions/37658444/…)
    【解决方案2】:

    用户错误,需要更改:(

    我什至在对 Doug 回答的评论中直接写了出来:

    "%windir%\System32\wevtutil.exe" im "%~dp0Manifest.man"
               /rf:"%~dp0Manifest.dll" /mf:"%~dp0Manifest.dll"
    

    但这不是我在批处理文件中实际拥有的内容,我忘记将完整路径放在 .man 文件名的前面。

    【讨论】:

      猜你喜欢
      • 2016-10-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-12-04
      • 1970-01-01
      • 2012-10-28
      相关资源
      最近更新 更多