我正在尝试使用以下
导出事件日志private static void ExportEventLogs(string exportPath, string Log)
{
var ela = new EventLogSession();
try
{
ela.ExportLogAndMessages(Log, PathType.LogName, "*", exportPath + ".evtx", false, CultureInfo.CurrentCulture);
// weird error direcoty invalid ?????
}
catch (EventLogException e)
{
//System.Windows.MessageBox.Show(e.ToString());
Clipboard.SetDataObject(e.ToString());
}
}
并在此处调用它应该从当前用户配置文件的计算机名称创建一个目录,并将computername + logname添加到该目录
ExportEventLogs(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile) + "\\Desktop\\" + System.Environment.MachineName + "\\" + System.Environment.MachineName, "Application");
我得到的问题是导演名称无效,但它创建了正确的文件,任何想法为什么?我也试过以管理员身份运行代码相同的结果
System.Diagnostics.Eventing.Reader.EventLogException: The directory name is invalid
at System.Diagnostics.Eventing.Reader.EventLogException.Throw(Int32 errorCode)
at System.Diagnostics.Eventing.Reader.NativeWrapper.EvtArchiveExportedLog(EventLogHandle session, String logFilePath, Int32 locale, Int32 flags)
at System.Diagnostics.Eventing.Reader.EventLogSession.ExportLogAndMessages(String path, PathType pathType, String query, String targetFilePath, Boolean tolerateQueryErrors, CultureInfo targetCultureInfo)
at Log_Utility.MainWindow.ExportEventLogs(String exportPath, String Log) in c:\Users\Chris.Ondrovic\Documents\Visual Studio 2013\Projects\Log Utility\Log Utility\MainWindow.xaml.cs:line 156
答案 0 :(得分:1)
将代码复制并粘贴到一个新程序中,但没有获得无效的目录名称。我确实必须在导出之前确保该目录存在。我的建议是查看exportPath并确保它不包含任何无效字符。
答案 1 :(得分:0)
而不是" PathType.LogName"使用" PathType.FilePath" LogName用于指定日志的名称,如" Application"或"安全"
我看来是在传递文件路径
答案 2 :(得分:0)
对于那些看过这个并且仍然无法弄清楚这个错误发生时发生了什么的人 - 我找到了解决方案。
在尝试导出应用程序系统日志时看到此错误后,我决定以管理员身份运行VS,并在您指定的相同路径下看到正在创建LocaleMetaData文件夹以及该文件。这是它尝试保存信息的文件夹,根据您保存的位置,您可能需要管理员权限。
很不幸的是,异常消息并没有告诉你发生了什么,因为当我看到文件被创建但仍然出现异常时,我正在抓挠我。