■ 관리자 권한으로 실행하는 방법을 보여준다.
▶ Program.cs
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 |
using System; using System.Diagnostics; using System.Security.Principal; using System.Windows.Forms; namespace TestProject { /// <summary> /// 프로그램 /// </summary> static class Program { //////////////////////////////////////////////////////////////////////////////////////////////////// Method ////////////////////////////////////////////////////////////////////////////////////////// Static //////////////////////////////////////////////////////////////////////////////// Private #region 프로그램 시작하기 - Main() /// <summary> /// 프로그램 시작하기 /// </summary> [STAThread] private static void Main() { if(IsAdministratorRole()) { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new MainForm()); } else { MessageBox.Show("관리자 권한으로 프로그램을 다시 실행합니다."); try { ProcessStartInfo processStartInfo = new ProcessStartInfo(); processStartInfo.UseShellExecute = true; processStartInfo.FileName = "TestProject.exe"; processStartInfo.WorkingDirectory = Environment.CurrentDirectory; processStartInfo.Verb = "runas"; Process.Start(processStartInfo); } catch(Exception exception) { Console.WriteLine(exception.ToString()); } return; } } #endregion #region 관리자 역할 여부 구하기 - IsAdministratorRole() /// <summary> /// 관리자 역할 여부 구하기 /// </summary> /// <returns>관리자 역할 여부</returns> private static bool IsAdministratorRole() { WindowsIdentity windowsIdentity = WindowsIdentity.GetCurrent(); if(windowsIdentity != null) { WindowsPrincipal windowsPrincipal = new WindowsPrincipal(windowsIdentity); return windowsPrincipal.IsInRole(WindowsBuiltInRole.Administrator); } return false; } #endregion } } |