|
@@ -4,6 +4,7 @@ using System.Collections.Generic;
|
|
using System.IO;
|
|
using System.IO;
|
|
using System.Linq;
|
|
using System.Linq;
|
|
using System.Security.Principal;
|
|
using System.Security.Principal;
|
|
|
|
+using System.Text;
|
|
using System.Threading.Tasks;
|
|
using System.Threading.Tasks;
|
|
using System.Windows.Forms;
|
|
using System.Windows.Forms;
|
|
|
|
|
|
@@ -21,10 +22,18 @@ namespace UAS_XmlAnalysor
|
|
{
|
|
{
|
|
WindowsIdentity identity = WindowsIdentity.GetCurrent();
|
|
WindowsIdentity identity = WindowsIdentity.GetCurrent();
|
|
WindowsPrincipal principal = new WindowsPrincipal(identity);
|
|
WindowsPrincipal principal = new WindowsPrincipal(identity);
|
|
|
|
+
|
|
|
|
+ string sysdisc = Environment.GetEnvironmentVariable("windir").Substring(0, 1);
|
|
|
|
+ Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException);
|
|
|
|
+ //处理UI线程异常
|
|
|
|
+ Application.ThreadException += new System.Threading.ThreadExceptionEventHandler(Application_ThreadException);
|
|
|
|
+ //处理非UI线程异常
|
|
|
|
+ AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);
|
|
|
|
+
|
|
Application.EnableVisualStyles();
|
|
Application.EnableVisualStyles();
|
|
Application.SetCompatibleTextRenderingDefault(false);
|
|
Application.SetCompatibleTextRenderingDefault(false);
|
|
- if (!Directory.Exists(Application.StartupPath+@"\Cache"))
|
|
|
|
- Directory.CreateDirectory(Application.StartupPath + @"\Cache");
|
|
|
|
|
|
+ if (!Directory.Exists(sysdisc + @":\Cache"))
|
|
|
|
+ Directory.CreateDirectory(sysdisc + @":\Cache");
|
|
if (principal.IsInRole(WindowsBuiltInRole.Administrator))
|
|
if (principal.IsInRole(WindowsBuiltInRole.Administrator))
|
|
Application.Run(new Form1());
|
|
Application.Run(new Form1());
|
|
else
|
|
else
|
|
@@ -71,5 +80,37 @@ namespace UAS_XmlAnalysor
|
|
reg.Close();
|
|
reg.Close();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
+ //处理线程的异常
|
|
|
|
+ static void Application_ThreadException(object sender, System.Threading.ThreadExceptionEventArgs e)
|
|
|
|
+ {
|
|
|
|
+ string str = GetExceptionMsg(e.Exception, e.ToString());
|
|
|
|
+ MessageBox.Show(str, "提示", MessageBoxButtons.OK, MessageBoxIcon.Stop);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ //未处理的异常统一通过这里返回
|
|
|
|
+ static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
|
|
|
|
+ {
|
|
|
|
+ string str = GetExceptionMsg(e.ExceptionObject as Exception, e.ToString());
|
|
|
|
+ MessageBox.Show(str, "提示", MessageBoxButtons.OK, MessageBoxIcon.Stop);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /// <summary>
|
|
|
|
+ /// 生成自定义异常消息
|
|
|
|
+ /// </summary>
|
|
|
|
+ /// <param name="ex">异常对象</param>
|
|
|
|
+ /// <param name="backStr">备用异常消息:当ex为null时有效</param>
|
|
|
|
+ /// <returns>异常字符串文本</returns>
|
|
|
|
+ static string GetExceptionMsg(Exception ex, string backStr)
|
|
|
|
+ {
|
|
|
|
+ StringBuilder sb = new StringBuilder();
|
|
|
|
+ if (ex != null)
|
|
|
|
+ {
|
|
|
|
+ sb.AppendLine(ex.Message);
|
|
|
|
+ //sb.AppendLine("【异常方法】:" + ex.StackTrace);
|
|
|
|
+ }
|
|
|
|
+ //else { sb.AppendLine("【未处理异常】:" + backStr); }
|
|
|
|
+ return sb.ToString();
|
|
|
|
+ }
|
|
}
|
|
}
|
|
-}
|
|
|
|
|
|
+
|
|
|
|
+}
|