写入 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
显然,如果您这样做,现有日志将停止工作。
我需要将一些 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
显然,如果您这样做,现有日志将停止工作。