В настоящее время я работаю над проектом, где мне нужно читать события Windows.
Я использую OpenEventLog () и ReadEventLog () из Win API. Я могу читать события из системы, используя имя типа события.
Но мне нужно указать имя файла или путь к файлу .evtx, который я сохранил из EventViewer. Я попробовал приведенный ниже код,
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 напрямую, как показано в «Чтение файлов .evt / .evtx напрямую» , но позже я обнаружил, что это не может быть сделано. По-видимому, нет способа читать их напрямую без Win API или без написания целой пачки кода парсера.
Заранее спасибо.
Ну получается OpenEventLog()
не предназначен для открытия сохранен .evtx
файлы.
Я должен был использовать OpenBackupEventLog()
для этого.
Других решений пока нет …