▶ Goal
Windows 윤영체제 내에서 시스템의 중요한 정보 또는 속성을 변경 하기 위해 관리자 권한으로 실행해야 되는 경우가 있습니다. 이를 위해 C# Winform을 통해 관리자 권한을 Check 하고 아닐 시, 관리자 권한으로 실행 시켜주는 프로그램을 구현해 봤습니다.
▶ Theory
구현 방식은 Winform Load 시, 관리자 권한 여부를 Check 해주는 함수를 만들고 함수 내에서 현재 Windows 사용자를 나타내는 Windowsldentity 개체를 반환 후, 권한을 부여 받은 후 관리자 권한으로 실행하게끔 하겠습니다.
▶ 적용 예시
→ 상위로 부터 전달 받은 시간 Data를 기준으로 윈도우 시간 동기화 작업
→ 상위 PC에서 Vision 내부 PC에 접근하여 폴더명 및 Data 추가 및 삭제 작업
[ CODE ]
using System;
using System.Windows.Forms;
// 필수
using System.Security.Principal;
using System.Diagnostics;
namespace AdministratorTest
{
static class Program
{
/// <summary>
/// The main entry point for the application.
/// </summary>
[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.SetHighDpiMode(HighDpiMode.SystemAware);
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}
}
public static bool IsAdministrator()
{
WindowsIdentity identity = WindowsIdentity.GetCurrent();
if (identity != null)
{
WindowsPrincipal principal = new WindowsPrincipal(identity);
return principal.IsInRole(WindowsBuiltInRole.Administrator);
}
return false;
}
}
}
'Language - C# > C#(UI - WINFORM)' 카테고리의 다른 글
C# - Bitmap Image 합성 (0) | 2021.11.17 |
---|