如何在Windows XP中检索所有事件日志?

问题描述:

正如我们所知,windows事件日志在低于Vista(XP及以下)和Vista及以上版本时不同,请参阅此处Windows Event Logs。在Vista上,我能够理解关于如何检索所有事件日志的API。如何在Windows XP中检索所有事件日志?

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

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

但是这个问题会在那里从哪里得到提供者的名称和它的资源DLL。我能想到的

一种方式是通过在注册表项中的所有子键遍历:HKEY_LOCAL_MACHINE \系统\ CurrentControlSet \服务\事件日志\应用 HKEY_LOCAL_MACHINE \系统\ CurrentControlSet \服务\事件日志\ SYSTEM HKEY_LOCAL_MACHINE \ SYSTEM \ CURRENTCONTROLSET \服务\事件日志\安全

从这些子项中,我们可以得到提供者的名称和它的EventMessageFile(虽然我发现了一些子项不具备EventMessageFile,而是hasParameterMessageFile)。

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

如果您使用的是WinAPI,则根据我所知,只需通过注册表迭代就可以了。是的,有些提供者没有EventMessageFile,这是正常的。也许他们只是把他们的插入字符串没有任何消息到事件日志中(我不能准确地说)。

但是,如果你可以使用.Net,那么有一个很好的EventLog Class,它为你提供了一堆非常好的方法。