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

관리자 권한이 없는 상태에서 시스템의 정보를 읽거나 쓰려고 할때 프로그램이 올바르게 작동하지 않습니다. 이럴때 프로그램이 실행되면서, 관리자 권한으로 상승시키는 것이 필요한데요. C#에서 이러한 내용에 대한 코드를 정리합니다. 모든 코드는 Program.cs에서 이루어집니다. 먼저 using 절에 다음과 같은 네임스페이스를 추가합니다.

using System.Security.Principal;
using System.Diagnostics;

그리고 현재 관리자 권한 상태인지의 여부를 파악하는 함수를 추가합니다.

public static bool IsAdministrator()
{
    WindowsIdentity identity = WindowsIdentity.GetCurrent();

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

    return false;
}

Program.cs 파일의 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;
}

“[C#] 관리자 권한으로 실행하기”에 대한 한개의 댓글

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다