24d7f3a29bcbe0372b96a1453d86e72c17a6c32b.svn-base 1.9 KB

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