Windows 운영체제는 시스템의 몇가지 중요한 정보를 변경을 수행하기 위해서 관리자 권한으로 실행되어져야 합니다. 예를 들어 COM 기반의 컴포넌트를 등록하기 위한 경우 관리자 권한이 아닌 경우 등록이 실패합니다. 아래의 코드는 C#으로 개발된 프로그램을 실행할 때 관리자 권한으로 프로그램이 실행될 수 있도록 하는데, Program.cs의 Main() 함수에 대한 전체 코드입니다.
[STAThread] static void Main() { if (IsAdministrator() == false) // 관리자 권한으로 실행되지 않는 경우라면 .. { try { ProcessStartInfo procInfo = new ProcessStartInfo(); procInfo.UseShellExecute = true; procInfo.FileName = Application.ExecutablePath; procInfo.WorkingDirectory = Environment.CurrentDirectory; procInfo.Verb = "runas"; Process.Start(procInfo); } catch (Exception ex) { // 사용자가 프로그램을 관리자 권한으로 실행하기를 원하지 않을 경우에 대한 처리 MessageBox.Show(ex.Message); return; } } else { // 처음부터 프로그램은 관리자 권한으로 실행되고 있는 경우라면 .. Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new Form1()); } }
위의 코드에서 IsAdministrator 라는 함수가 보이는데요. 이 함수는 아래와 같습니다.
public static bool IsAdministrator() { WindowsIdentity identity = WindowsIdentity.GetCurrent(); if(identity != null) { WindowsPrincipal principal = new WindowsPrincipal(identity); return principal.IsInRole(WindowsBuiltInRole.Administrator); } return false; }
위의 코드에서 참조하는 클래스를 인식하기 위해서는 다음을 import 문이 필요합니다.
using System.Security.Principal; using System.Diagnostics;