Program.cs 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Windows.Forms;
  4. namespace Core.Mes.ClientManager
  5. {
  6. static class Program
  7. {
  8. /// <summary>
  9. /// 应用程序的主入口点。
  10. /// </summary>
  11. ///
  12. [STAThread]
  13. static void Main()
  14. {
  15. Application.EnableVisualStyles();
  16. Application.SetCompatibleTextRenderingDefault(false);
  17. /**
  18. * 当前用户是管理员的时候,直接启动应用程序
  19. * 如果不是管理员,则使用启动对象启动程序,以确保使用管理员身份运行
  20. */
  21. //获得当前登录的Windows用户标示
  22. System.Security.Principal.WindowsIdentity identity = System.Security.Principal.WindowsIdentity.GetCurrent();
  23. System.Security.Principal.WindowsPrincipal principal = new System.Security.Principal.WindowsPrincipal(identity);
  24. //判断当前登录用户是否为管理员
  25. if (principal.IsInRole(System.Security.Principal.WindowsBuiltInRole.Administrator))
  26. {
  27. //如果是管理员,则直接运行
  28. Application.Run(new MainForm());
  29. }
  30. else
  31. {
  32. //创建启动对象
  33. System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo();
  34. startInfo.UseShellExecute = true;
  35. startInfo.WorkingDirectory = Environment.CurrentDirectory;
  36. startInfo.FileName = Application.ExecutablePath;
  37. //设置启动动作,确保以管理员身份运行
  38. startInfo.Verb = "runas";
  39. try
  40. {
  41. System.Diagnostics.Process.Start(startInfo);
  42. }
  43. catch
  44. {
  45. return;
  46. }
  47. //退出
  48. Application.Exit();
  49. }
  50. }
  51. }
  52. }