我需要将某些事件从Windows事件日志导出到Windows Server 2008 R2上的XML。为此,我使用EvtExportLog将这些事件导出到文件中,然后尝试使用EvtArchiveExportedLog获取事件的本地化描述。
这是示例:
EvtExportLog( 0, 0, query, logFileName, EvtExportLogChannelPath );
EvtArchiveExportedLog( 0, logFileName, 0, 0 );
EvtExportLog函数成功并创建.evtx文件,但EvtArchiveExportedLog始终失败,并显示ERROR_DIRECTORY错误代码。我不知道这种行为的原因是什么。
最佳答案
看来我已经找到原因了。 EvtArchiveExportedLog
对承载事件日志服务的svchost.exe进行RPC调用。此服务尝试在“%windir%\ ServiceProfiles \ LocalService \ AppData \ Local \ Temp”文件夹中创建文件,失败并显示ERROR_ACCESS_DENIED
代码,并将ERROR_DIRECTORY
返回到RPC客户端。就RPC服务器模拟客户端而言,解决方案是向调用线程授予访问权限。