evtExportLog 函数 (winevt.h)

从指定的通道或日志文件复制事件,并将其写入目标日志文件。

语法

BOOL EvtExportLog(
  [in, optional] EVT_HANDLE Session,
  [in]           LPCWSTR    Path,
  [in]           LPCWSTR    Query,
  [in]           LPCWSTR    TargetFilePath,
  [in]           DWORD      Flags
);

参数

[in, optional] Session

EvtOpenSession 函数返回的远程会话句柄。 对于本地通道,设置为 NULL

[in] Path

通道的名称或日志文件的完整路径,其中包含要导出的事件。 如果 Query 参数包含 XPath 查询,则必须指定通道或日志文件。 如果 Flags 参数包含 EvtExportLogFilePath,则必须指定日志文件。 如果 Query 参数包含结构化 XML 查询,则在此处指定的通道或路径必须与查询中的通道或路径匹配。 如果 Flags 参数包含 EvtExportLogChannelPath,则如果查询是指定通道的结构化 XML 查询,则此参数可以为 NULL

[in] Query

一个查询,指定要导出的事件类型。 可以指定 XPath 1.0 查询或结构化 XML 查询。 如果 XPath 包含的表达式超过 20 个,请使用结构化 XML 查询。 若要导出所有事件,请将此参数设置为 NULL 或“*”。

[in] TargetFilePath

将接收事件的目标日志文件的完整路径。 目标日志文件不得存在。

[in] Flags

指示事件是来自通道还是日志文件的标志。 有关可能的值,请参阅 EVT_EXPORTLOG_FLAGS 枚举。

返回值

返回代码/值 说明
TRUE
函数成功。
FALSE
函数失败。 使用 GetLastError 函数获取错误代码。

注解

可以使用结构化 XML 查询从多个通道导出事件 (请参阅 使用事件) ;但是,不能使用此函数合并来自多个日志文件的事件。 如果查询结果为空,则服务将创建一个包含标头信息但不包含事件的文件。

若要从通道中删除事件并将其写入目标日志文件,请调用 EvtClearLog 函数。 若要将本地化字符串包含在日志文件中的事件中,请调用 EvtArchiveExportedLog 函数。

必须指定目标日志文件的绝对路径;不能使用相对路径和环境变量来指定目标日志文件。 路径可以是 UNC) 路径 (通用命名约定。 应使用 .evtx 作为文件扩展名。

此函数仅影响指定的通道或日志文件-如果通道使用 autoBackup 或 fileMax,则此函数不会影响这些备份文件。

示例

有关演示如何使用此函数的示例,请参阅 将事件保存到日志文件

要求

要求
最低受支持的客户端 Windows Vista [仅限桌面应用]
最低受支持的服务器 Windows Server 2008 [仅限桌面应用]
目标平台 Windows
标头 winevt.h
Library Wevtapi.lib
DLL Wevtapi.dll

另请参阅

EvtArchiveExportedLog

EvtClearLog