在给定路径中读取保存的EVTX文件

Reading a saved EVTX file in the given path

本文关键字:保存 EVTX 文件 读取 路径      更新时间:2023-10-16

我当前正在研究一个我需要阅读Windows事件的项目。我正在使用Win API的OpenEventLog((和ReadEventLog((。我可以使用该事件的打字机阅读系统中的事件。但是我需要指定我从EventViewer保存的.EVTX文件的文件名或文件路径。我尝试了以下代码,

HANDLE logHandle = OpenEventLog(NULL, "C:\Users\MyAccount\Documents\myevents.evtx");
DWORD status = GetLastError();
if(logHandle == NULL){
    cerr<<"NO HANDLE GENERATED!!!"<<endl;
}else if(status == ERROR_INVALID_HANDLE){
    cerr<<"INVALID HANDLE!!!"<<endl;
}else if(status!=0){
    cout<<"OPENEVENTLOG ERROR STATUS::>"<<status<<endl;
}

但找不到指定的文件,而是切换到默认的应用程序事件。谁能告诉我问题可能是什么?或者如果代码中有任何更改?

ps:我什至尝试将文件放在项目文件夹中,并仅指定文件名(myevents.evtx(,但仍然不起作用。我也尝试直接读取EVTX,如" reading .EVT/.EVTX文件"中所示直接",但后来我发现这是无法做到的。显然,没有Win API或不编写一大堆解析器代码,就无法直接阅读它们。

预先感谢。

好吧,事实证明OpenEventLog()并不是打开保存的.evtx文件。我应该为此使用OpenBackupEventLog()