【问题标题】:Exporting application event logs导出应用程序事件日志
【发布时间】:2017-11-06 09:36:44
【问题描述】:

我在导出 Windows 应用程序事件日志时遇到了问题。我使用了来自 msdn 的代码。

try
      {
          EventLogSession els = new EventLogSession();
          els.ExportLogAndMessages("Application", PathType.LogName, "*", 
              Path.Combine(temporaryDirectory, "ApplicationLogs.evtx"), false, 
                 CultureInfo.CurrentCulture);
      }
            catch (UnauthorizedAccessException e)
            {
                MessageBox.Show("Unauthorized access to event logs. "+e.Message);
            }
            catch (EventLogNotFoundException e)
            {
                MessageBox.Show("Event logs not found. "+e.Message);
            }
            catch (EventLogException e)
            {
                MessageBox.Show("Event log exception. "+e.Message);
            }

当我启动程序时,代码在我的计算机上运行良好。但是,在某些不同的计算机上使用时,有时会出现异常“事件日志异常。目录名称无效”。 evtx 文件已正确导出,但包含 .MTA 文件的 LocaleMetadata 文件夹不存在并引发异常。我尝试在互联网上搜索解决方案,但找不到任何解决方案。导出的日志文件将在不同的计算机上查看,所以我的理解是我也需要导出元数据文件。如何确保语言环境元数据文件夹始终与 evtx 文件一起导出而不会抛出上述异常?

【问题讨论】:

  • 你如何生成“temporaryDirectory”,因为这似乎是你的失败
  • stringtemporaryDirectory = Path.Combine(Path.GetTempPath(), "DarAppTemp");我创建了一个临时文件夹,将我需要的文件复制到其中,然后将它们压缩在一起。临时目录路径是任意的,只是一个放东西的地方,以后再处理。
  • 在导出前您确定“DarAppTemp”确实存在吗?
  • stringtemporaryDirectory = Path.Combine(Path.GetTempPath(), "DarAppTemp"); if (Directory.Exists(temporaryDirectory)) { Directory.Delete(temporaryDirectory, true); } Directory.CreateDirectory(临时目录);目录应该在我尝试将文件复制到其中时出现。其他文件都没有问题,只是 ExportLogAndMessages 方法似乎在某些机器上抛出了这个异常。
  • 这些机器(出现故障的地方)是否有其他机器没有的共同点?

标签: c# event-log


【解决方案1】:

here。如果您以管理员身份运行该程序,它将起作用。至于为什么会这样,我不知道。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-22
    • 2014-11-01
    • 2021-05-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多