gpt4 book ai didi

c++ - 如何检索 Windows XP 中的所有事件日志?

转载 作者:太空宇宙 更新时间:2023-11-04 03:01:09 25 4
gpt4 key购买 nike

我们知道,Windows 事件日志在 Vista 以下(XP 及以下)和 Vista 及以上版本是不同的,请参见此处 Windows Event Logs .在 Vista 上,我能够理解有关如何检索所有事件日志的 API。

在 Windows XP 上,我可以运行这个 sample code .我们需要填写两件事:

#define PROVIDER_NAME           L"MyEventProvider"
#define RESOURCE_DLL L"<path>\\Provider.dll"

但是问题在于从哪里获取提供程序名称及其资源 dll。

我能想到的一种方法是遍历注册表项下的所有子项:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Eventlog\ApplicationHKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Eventlog\SystemHKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Eventlog\Security

从这些子项中,我们可以获得提供者名称及其 EventMessageFile(尽管我发现某些子项没有 EventMessageFile,而是有 ParameterMessageFile)。

这是唯一的方法吗?或者还有其他更好的方法吗?

最佳答案

如果您使用的是 WinAPI,那么据我所知,遍历注册表是唯一的方法。是的,有些提供商没有 EventMessageFile,这很正常。也许他们只是将没有任何消息的插入字符串放入事件日志中(我不能准确地说)。

但是,如果可以使用.Net,那还是不错的EventLog Class ,它为您提供了很多非常好的方法。

关于c++ - 如何检索 Windows XP 中的所有事件日志?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11638590/

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