[C#] 관리자 권한으로 실행하기

해당 작업은 Program.cs 에서 작업을 합니다.

using System.Security.Principal;
using System.Diagnostics;
/// <summary>
/// 관리자 권한 체크 
/// </summary>
/// <returns></returns>
public static bool IsAdministrator()
{
	WindowsIdentity identity = WindowsIdentity.GetCurrent();

	if (null != identity)
	{
		WindowsPrincipal principal = new WindowsPrincipal(identity);
		return principal.IsInRole(WindowsBuiltInRole.Administrator);
	}

	return false;
}

메인 실행전에 관리자 권한으로 실행 하도록 하면 됩니다.

[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.ToString());
			}

			return;
		}

		Application.EnableVisualStyles();
		Application.SetCompatibleTextRenderingDefault(false);
		Application.Run(new MainForm());
}

위 방법으로로 처리 할 수 있지만 다른 방법도 있습니다.

사용자 삽입 이미지


프로그램  속성에서 보안의 “ClickOnce”를 선택합니다.

사용자 삽입 이미지
사용자 삽입 이미지

그러면은 위 처럼 “app.mainfest”가 생기게 됩니다.
※ 이방법을 할 경우에는 프로그램에 아이콘에 방패 모양이 생기게 됩니다.

원래 기본값이 “asInvoker’ 세팅된 부분을 “requireAdministrator” 로 변경하면 됩니다.