즐겁게 개발을...

개발보다 게임이 더 많이 올라오는 것 같은...

개발/C#

[2021.03] C# 프로그램을 관리자 권한으로 실행하기

다물칸 2021. 3. 26. 15:24
728x90
반응형

출처: www.enjoydev.net/xe/en_devboard/26728

 

엔조이데브: 팁&트릭 - 관리자 권한으로 실행하기

다음 함수 추가 public static bool IsAdministrator() { WindowsIdentity identity = WindowsIdentity.GetCurrent(); if (null != identity) { WindowsPrincipal principal = new WindowsPrincipal(identity); return principal.IsInRole...

www.enjoydev.net

다음 함수는 프로그램이 관리자 권한으로 실행했는지에 대한 여부를 알 수 있게 하는 함수이다.

Static 함수로 추가하거나 클래스에 다음 함수를 추가한다.

 

아래 코드는 Static 함수로 추가하였다.

public static bool IsAdministrator()
{
    WindowsIdentity identity = WindowsIdentity.GetCurrent();
 
    if (null != identity)
    {
        WindowsPrincipal principal = new WindowsPrincipal(identity);
        return principal.IsInRole(WindowsBuiltInRole.Administrator);
    }
 
    return false;
}

관리자 권한이 아닌 경우 함수에서 false를 리턴한다. 

 

programs.cs 진입점 파일에 다음 코드를 추가한다.

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;
}

위 코드에서 관리자 권한으로 실행할 것인지를 묻는 시스템 메시지를 출력해준다.

반응형