使用 c++ 中的 win api 获取事件查看器日志

发布于 2024-09-24 05:33:58 字数 477 浏览 8 评论 0原文

我的应用程序需要将事件查看器日志保存到指定目录,并且必须使用 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;
}

My application need to save event viewer logs to a specified directory and it has to be done with win api. Application and System logs are required.

EDIT: EvtExportLog - I found out that I can't use this function because minimal requirements are Win Server 2008, and I need this to work on Win Server 2000 and Win Server 2003.

Any suggestions what to use and how to use it?

And there is solution thanks to 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;
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

始终不够 2024-10-01 05:33:58

您可以使用 EvtOpenChannelEnumEvtNextChannelPathEvtClose (文档)。这些 API(特别是 EvtNextChannelPath)将以适当的格式返回 EvtExportLog 的路径。

You can enumerate the available channels on the system using EvtOpenChannelEnum, EvtNextChannelPath and EvtClose (documentation). These APIs (EvtNextChannelPath specifically) will return paths in an appropriate format for EvtExportLog.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文