正在使用“Windows事件跟踪”事件

时间:2010-03-05 02:22:35

标签: windows logging tracing etw

this问题的回答使我开始考虑使用“Windows事件跟踪”来满足我们的跟踪需求。我遇到了NTrace,这似乎是从C#代码生成ETW事件的好方法(使用与XP兼容的“经典提供者”模型)。

但是,我无法找到使用这些事件的简单方法 - 实时查看它们和/或将它们记录到文件中。我找到的唯一方法是在NTrace文档中描述:使用仅作为Windows DDK的一部分提供的工具。

如果字段中存在复杂问题,我们可能需要让用户生成包含跟踪的文件。我们不能要求用户下载DDK或执行一些复杂的操作来执行此操作。

是否有一种直接,用户友好的方式将ETW事件记录到文件中?

此外,如果某人在Windows Vista / 7上没有以管理员身份运行,他们是否可以使用ETW事件?

5 个答案:

答案 0 :(得分:3)

Windows事件日志读取ETW。事实上,我认为这是消费者(非程序)查看和导出ETW痕迹的正确方法。

点击此处查看示例。 http://blogs.microsoft.co.il/blogs/applisec/archive/2009/10/12/reading-etw-tracing-using-event-viewer.aspx

This question on msdn讨论未显示日志时要执行的操作。这有什么帮助吗?

答案 1 :(得分:3)

TraceView是最简单的开箱即用解决方案,但您可以编写自己的特定于您的提供商的ETW查看器。这将使您可以完全控制演示文稿并使最终用户更容易,因为TraceView实际上是一个调试工具,而不是您可以要求最终用户运行的。

就实时追踪而言,according to the documentation

  

只有具有管理权限的用户,Performance Log Users组中的用户以及作为LocalSystem,LocalService,NetworkService运行的服务才能实时使用事件。要授予受限用户实时使用事件的能力,请将其添加到Performance Log Users组。

     

Windows XP和Windows 2000:任何人都可以使用实时事件。

如果您有兴趣编写自己的ETW查看器(实时或日志文件),here is the relevant documentation

答案 2 :(得分:2)

ETW跟踪旨在仅由管理员运行,因为跟踪可能包含个人身份信息。如果非管理员可以捕获跟踪,则会造成安全威胁。

以下是来自xperf的警告示例

您刚捕获的跟踪“C:\ Windows \ system32 \ kernel.etl”可能包含 个人身份信息,包括但不一定限于访问文件的路径,访问注册表的路径和进程名称。确切的信息取决于记录的事件。与其他人分享此跟踪时请注意这一点。

希望这能回答你的问题

答案 3 :(得分:1)

以下是如何从自己的custom provider获取自定义ETW跟踪以及如何在managed code

中使用ETW

希望这有帮助。

答案 4 :(得分:1)

IMO Perfview是控制和查看ETW跟踪的最佳工具之一。它还可以提供托管调用堆栈。最好的部分是你可以在任何服务器上进行xcopy并收集痕迹。

Perfview使用TraceEvent库,samples如何使用API​​和C#

来使用它