2013-10-08 43 views
1

Windows事件日誌通常存儲在%SystemRoot%\System32\winevt\Logs中。所有文件都是某種數據庫,我想問一下如何從程序上將數據從*.evt*.evtx文件中輸入到單獨的記錄以及這些記錄如何從系統中刪除。如何枚舉和刪除Windows事件?

我找到了Windows Event Log Functions,但是我正在尋找可以在XP上運行的解決方案。後者試過Event Logging Functions。使用這個API我設法讀取數據作爲單個記錄,但是隻有一個刪除功能,它是ClearEventLog。但是,這會從日誌中刪除所有事件。我正在尋找可以刪除單個記錄的解決方案。

重要注意事項:我使用C++進行編程,因此C#和.net解決方案沒有幫助,我也需要與Windows-XP兼容。

回答

2

存在從事件日誌中讀取的API。

  • OpenEventLog function - 打開的句柄到指定的事件日誌
  • ReadEventLog功能 - 從指定的事件日誌條目的指定數目。該功能可用於按時間順序或反向時間順序讀取日誌條目。
  • Querying for Event Information顯示如何打開事件日誌,從日誌中讀取事件,打印有關事件的信息,然後關閉事件日誌。
  • Event Logging Functions - API本身
+0

感謝,還[這裏](http://msdn.microsoft.com/en-us/library/windows/desktop/aa363654%28v=vs.85%29。 aspx)可以找到完整的API程序列表。 – ST3

+0

另外,您可以做的一件有趣的事情是將事件日誌備份到外部文件中。這種'.EVT'文件可以傳送到非現場/離線審查。 –

+0

還有一個關於這個的問題,你給了一些API的鏈接。現在我已經有了全面的掃描機制,但是這個API有'ClearEventLog'函數,這會刪除某些事件日誌中的所有數據,你知道刪除單個記錄的東西嗎? – ST3