2012-07-24 79 views
0

正如我們所知,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)。

這是唯一的方法來做到這一點?或者還有其他更好的方法嗎?

回答

2

如果您使用的是WinAPI,則根據我所知,只需通過註冊表迭代就可以了。是的,有些提供者沒有EventMessageFile,這是正常的。也許他們只是把他們的插入字符串沒有任何消息到事件日誌中(我不能準確地說)。

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

相關問題