Program.cs 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. using System;
  2. using System.Security.Principal;
  3. using System.Windows.Forms;
  4. namespace TestProject
  5. {
  6. static class Program
  7. {
  8. /// <summary>
  9. /// 应用程序的主入口点。
  10. /// </summary>
  11. [STAThread]
  12. static void Main()
  13. {
  14. try
  15. {
  16. WindowsIdentity identity = WindowsIdentity.GetCurrent();
  17. WindowsPrincipal principal = new WindowsPrincipal(identity);
  18. //设置应用程序处理异常方式:ThreadException处理
  19. Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException);
  20. //处理UI线程异常
  21. Application.EnableVisualStyles();
  22. Application.SetCompatibleTextRenderingDefault(false);
  23. //启用异常记录日志的操作
  24. //如果是管理员的身份
  25. if (principal.IsInRole(WindowsBuiltInRole.Administrator))
  26. {
  27. Application.Run(new Form1());
  28. }
  29. else
  30. {
  31. //创建启动对象
  32. System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo();
  33. // 设置运行文件
  34. startInfo.FileName = Application.ExecutablePath;
  35. //设置启动动作,确保以管理员身份运行
  36. startInfo.Verb = "runas";
  37. //如果不是管理员,则启动UAC
  38. System.Diagnostics.Process.Start(startInfo);
  39. //退出 System.Windows.Forms.Application.Exit();
  40. }
  41. }
  42. catch (Exception)
  43. {
  44. throw;
  45. }
  46. }
  47. }
  48. }