Получить журналы просмотра событий с помощью win API в С++

Моему приложению необходимо сохранять журналы просмотра событий в указанный каталог, и это нужно делать с помощью win api. Требуются журналы приложений и системы.

РЕДАКТИРОВАТЬ: EvtExportLog - я обнаружил, что не могу использовать эту функцию, потому что минимальные требования - Win Server 2008, и мне нужно, чтобы это работало на Win Server 2000 и Win Server 2003.

Любые предложения, что использовать и как его использовать?

И есть решение благодаря Ричарду Куку.

    int getEventLogs()
{
    HANDLE h = OpenEventLog(NULL,"System");
    if(!BackupEventLog(h,"backup.evt"))
    {
        wprintf(L"BackupEventLog failed for initial export with %lu.\n", GetLastError());
    }
    return 1;
}

person shake    schedule 22.09.2010    source источник


Ответы (1)


Вы можете перечислить доступные каналы в системе, используя EvtOpenChannelEnum, EvtNextChannelPath и EvtClose (документация). Эти API (в частности, EvtNextChannelPath) будут возвращать пути в соответствующем формате для EvtExportLog.

person Richard Cook    schedule 22.09.2010
comment
tnx за быстрый ответ, но я узнал, что требования к этим функциям - это Win Server 2008, и мне нужно, чтобы это работало на Win Server 2000 и 2003. Любые предложения? - person shake; 23.09.2010
comment
Документация для старых API (Windows 2000, XP и Windows Server 2003) находится по адресу msdn.microsoft.com/en-us/library/aa363652(v=VS.85).aspx. BackupEventLog, вероятно, то, что вам нужно. - person Richard Cook; 23.09.2010
comment
В любом случае, чтобы читать/резервировать журналы событий в определенном диапазоне дат/времени, скажем, с 1 по 7 января? - person foobar; 23.03.2017