1

我已经使用 Visual Studio 2015 和 nuget 包Microsoft 事件源库(最新版本 1.1.28)构建了一个自定义事件源。

我已经在我的 Windows 8.1 工作站和 Windows Server 2012 R2 上使用wevtutil.exe安装了清单。

一般来说,这个 EventSource 可以在两台机器上工作,它正在获取在事件查看器中可见的事件。仅在 Windows Server 2012 R2 上,事件查看器中的输出看起来有点糟糕。

当我将它安装在我的开发工作站上时,它工作正常。这是我的示例 UnhandledException 事件的示例:

在此处输入图像描述

当我在 Windows Server 2012 R2 上安装它时,事件查看器完全搞砸了,如您在此屏幕截图中所见:

在此处输入图像描述

有谁知道为什么会这样?我该如何解决?

编辑:

我可以按照以下步骤使用Microsoft EventSource 库示例重现它:

  1. 在 Visual Studio 中创建一个新的控制台应用程序项目并将其命名为“DemoEventSource”
  2. 从 nuget安装Microsoft EventSource 库示例
  3. 运行 EventLogEventSourceDemo。您可以注释掉“EventSourceSamples\00_AllSamples.cs”中的所有其他示例,因为它们与此问题无关在此处输入图像描述
  4. 按 F5 运行它,然后按照说明操作,事件查看器将自动打开。在我的工作站上它工作正常:在此处输入图像描述
  5. 在下一步中,我使用 Windows Server 12 在 Azure 上创建了一个虚拟机(Windows Server 2012 R2 和 Windows Server 2012 上出现问题)并在那里部署了测试应用程序。如我上面的示例所述,结果很混乱:在此处输入图像描述
4

1 回答 1

0

如果没有大量测试,我不能 100% 肯定地说,但这看起来像一个错误。EventSource 使用关键字做一些不寻常(但合法)的事情。例如,清单显示“事件 ID 72 使用关键字 0x12”,但当您实际查看 ETL 文件时,该事件实际上使用关键字 0xf000012(或类似内容)。这种行为是合法的,但很少见。在某些版本的 tdh.dll 中,这会导致事件被错误解码。事件日志使用 tdh.dll 对事件进行解码。

IIRC,Windows 8.1 修复了这个错误,但我不认为该修复适用于早期版本。

于 2016-07-12T22:55:48.257 回答