【发布时间】: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 方法似乎在某些机器上抛出了这个异常。
-
这些机器(出现故障的地方)是否有其他机器没有的共同点?