写入 ETW 事件日志

Writing ETW event logs

我需要将一些 ETW 条目写入 Windows 事件日志。例如,我需要在应用程序和服务 Logs/Microsoft/Windows/AAD(或任何其他文件夹,并不重要)中生成一些事件。

New-winevent 在 powershell 中正是这样做的,但是速度太慢了。

我也试过这个 https://blogs.msdn.microsoft.com/dotnet/2013/08/09/announcing-the-eventsource-nuget-package-write-to-the-windows-event-log/ 并且它可以快速将事件生成到任何文件夹中,但我没有看到作为现有提供者生成事件的明显方法。如果我尝试注册一个新的,wevtutil 会抱怨该文件夹的提供者已经注册(这是有道理的)。 那么解决这个问题的最佳方法是什么?作为一些现有提供者,您如何生成事件?

折腾了一段时间,终于弄明白了,以防有人遇到同样的问题。

我从未找到使用现有提供程序的方法。相反,我生成了清单文件并用它来卸载现有的提供程序:

wevtutil.exe -um $manifestfile

在那之后,新的,我需要的生成事件的那个,可以安装没有任何错误: wevtutil.exe -im $manifestfile /mf:$dllfile /rf:$dllfile

显然,如果您这样做,现有日志将停止工作。