EvtArchiveExportedLog 失败并显示 ERROR_DIRECTORY
我需要在 Windows Server 2008 R2 上将一些事件从 Windows 事件日志导出到 XML。为了实现这一目标,我使用 EvtExportLog 将这些事件导出到文件,然后尝试使用 EvtArchiveExportedLog 获取事件的本地化描述。 以下是示例:
EvtExportLog( 0, 0, query, logFileName, EvtExportLogChannelPath );
EvtArchiveExportedLog( 0, logFileName, 0, 0 );
EvtExportLog 函数成功并创建 .evtx 文件,但 EvtArchiveExportedLog 不断失败,并显示 ERROR_DIRECTORY 错误代码。我不知道这种行为的原因是什么。
I need to export some events from Windows Event Log to XML on Windows Server 2008 R2. To achieve it I export these events to a file using EvtExportLog and then try to use EvtArchiveExportedLog to get localized descriptions for events.
Here's the sample:
EvtExportLog( 0, 0, query, logFileName, EvtExportLogChannelPath );
EvtArchiveExportedLog( 0, logFileName, 0, 0 );
EvtExportLog function succeeds and creates .evtx file but EvtArchiveExportedLog constantly fails with ERROR_DIRECTORY error code. I have no idea what the reason of such behaviour is.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
看来我已经找到原因了。
EvtArchiveExportedLog
对托管事件日志服务的 svchost.exe 进行 RPC 调用。此服务尝试在“%windir%\ServiceProfiles\LocalService\AppData\Local\Temp”文件夹中创建文件,失败并显示ERROR_ACCESS_DENIED
代码,并向 RPC 客户端返回ERROR_DIRECTORY
。就RPC服务器模拟客户端而言,解决方案是向调用线程授予访问权限。It seems that I've found the reason.
EvtArchiveExportedLog
makes an RPC call to svchost.exe which hosts eventlog service. This service tries to create a file in "%windir%\ServiceProfiles\LocalService\AppData\Local\Temp" folder, fails withERROR_ACCESS_DENIED
code and returnsERROR_DIRECTORY
to RPC client. So far as RPC server impersonates client, the solution is to grant access privileges to the calling thread.