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;