gpt4 book ai didi

c++ - 将 ETW 事件发送到全局 "Application"日志

转载 作者:可可西里 更新时间:2023-11-01 10:25:31 24 4
gpt4 key购买 nike

我想让我的应用程序在 Windows 事件查看器中的全局“应用程序”日志中显示警告和错误。我已成功按照说明进行操作 here这帮助我启动并运行了 ETW,但我仅在通过跟踪程序明确启用日志记录时才看到事件,即便如此,它们也仅显示在生成的 .etl 文件中,而不是全局日志中。

如何以编程方式注册事件并将事件写入全局应用程序日志,以便当用户运行事件查看器时,他们将看到来 self 的应用程序的事件?有可能吗?简而言之,我希望得到类似于下面的屏幕截图的结果,只是需要更少的 Photoshop:

enter image description here

最佳答案

ETW 对于您的目的而言似乎相当复杂,这是写入事件日志的过程:

a) 一次性(您通常会在安装应用程序时这样做)Register your application as a Event Provider ;真正需要的只有 EventMessageFile 条目:
- 键 = HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\eventlog\Application\MyCoolGame
- 字符串名称 (REG_EXPAND_SZ) = EventMessageFile
- 字符串值 = C:\Windows\Microsoft.NET\Framework\v4.0.30319\EventLogMessages.dll

b) 在程序启动时:Register Event Source并接收句柄:

hEventLog = RegisterEventSource(NULL, lpszAppNameName);

c) 使用 ReportEvent function将条目写入事件日志:

TCHAR szLogBuffer[] = _T("Started new multiplayer server.");
const TCHAR *lpszEventStrings[2] = {szLogBuffer, NULL};
ReportEvent(hEventLog, EVENTLOG_INFORMATION_TYPE, 0, 1, NULL, 1, 0, lpszEventStrings, NULL)

d) 在程序关闭时:

DeregisterEventSource(hEventLog);

关于c++ - 将 ETW 事件发送到全局 "Application"日志,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19614618/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com