프로그래밍/.NetFramework

윈도우7 에서 관리자권한으로 실행하기. UAC 권한 상승.

쇠주는참이슬 2012. 4. 4. 09:56

무슨 설명이 필요하리까.


현재 PC의 권한 상태를 확인하고


관리자가 아니면 관리자권한으로 상승시키고 해당 윈폼을 실행시킨다.


만약 이렇게 처리해주지 않는다면 항상 확인 창이 뜨겠지. 관리자권한이 필요합니다~~~ 뭐 이런식으로.


using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Windows.Forms;
using System.Security.Principal;

namespace Hysco_Widget
{
    static class Program
    {
        /// <summary>
        /// 해당 응용 프로그램의 주 진입점입니다.
        /// </summary>
        [STAThread]
        static void Main()
        {
            bool administrator = _isAdministrator(); 
            if(!administrator)
            {
            System.Diagnostics.ProcessStartInfo processInfo = new System.Diagnostics.ProcessStartInfo(System.Reflection.Assembly.GetExecutingAssembly().CodeBase);
          //  MessageBox.Show(System.Reflection.Assembly.GetExecutingAssembly().CodeBase);
            processInfo.UseShellExecute = true;
            processInfo.Verb = "runas"; 
            Process.Start(processInfo);
            }
            else
            {
                Application.EnableVisualStyles();
                Application.SetCompatibleTextRenderingDefault(false);
                Application.Run(new Form1());    
            } 
        }

        private static bool _isAdministrator()
        {
            WindowsIdentity identity = WindowsIdentity.GetCurrent();
            WindowsPrincipal principal = new WindowsPrincipal(identity);
            return principal.IsInRole(WindowsBuiltInRole.Administrator);
        }
    } 
}