2010-09-22 25 views
1

Mon application doit enregistrer les journaux de l'observateur d'événements dans un répertoire spécifié et cela doit être fait avec win api. Les journaux d'application et de système sont requis.Obtenir les journaux de l'observateur d'événements avec win api en C++

EDIT: EvtExportLog - Je trouve que je ne peux pas utiliser cette fonction parce que les exigences minimales sont Windows Server 2008, et j'ai besoin que cela fonctionne sur Windows Server 2000 et Windows Server 2003.

Toute suggestion quoi utiliser et comment l'utiliser?

Et il y a une solution grâce à Richard Cook.

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; 
} 

Répondre

2

Vous pouvez énumérer les canaux disponibles sur le système en utilisant EvtOpenChannelEnum, EvtNextChannelPath et EvtClose (documentation). Ces API (EvtNextChannelPath spécifiquement) renverront les chemins dans un format approprié pour EvtExportLog.

+0

tnx pour une réponse rapide, mais j'ai découvert que les exigences pour ces fonctions sont Win Server 2008, et j'ai besoin de cela pour fonctionner sur Win Server 2000 et 2003. Des suggestions? – shake

+1

La documentation des anciennes API (Windows 2000, XP et Windows Server 2003) se trouve à l'adresse http://msdn.microsoft.com/en-us/library/aa363652(v=VS.85).aspx. 'BackupEventLog' est probablement ce dont vous avez besoin. –

+0

merci .. cela a fonctionné .. :)) – shake