Vista 및 Windows 7 이후 버전에서는 UAC(사용자 계정 제어)라는 보안 메커니즘이 추가되었으며, UAC가 켜져 있으면 사용자가 관리자 권한으로 로그인하더라도 애플리케이션이 시스템 디렉터리, 시스템 레지스트리 및 기타 설정에 기본적으로 쓰지 못해 시스템의 정상 작동에 영향을 줄 수 있습니다. 이 메커니즘은 시스템의 보안을 크게 향상시키지만, 애플리케이션 개발자에게 UAC를 강제로 끌 수는 없으며, 때로는 우리가 개발하는 애플리케이션이 관리자 역할을 해야 할 때가 있습니다. 어떻게 그런 기능을 구현할 수 있을까요? 다음은 C# 프로그램이 사용자에게 관리자 권한으로 실행을 요청하는 방식을 구현하는 방법입니다. 이 예시에서 WinForm 프로그램은 새로운 프로젝트가 생성되고 이에 맞게 수정됨을 보여줍니다: 방법 1: System.Diagnostics.Process.Start(: 구현 방법: 기본적으로 생성된 프로그램 파일을 수정하면 수정된 코드는 다음과 같습니다: 코드가 이미 주석이 달렸기 때문에 자세한 내용은 다루지 않겠습니다; 효과: System.Diagnostics.Process.Start()라는 외부 호출을 호출하여 시작되기 때문에, VS를 통해 직접 실행할 때는 관리자 권한이 필요하다고 요청하지 않고, 프로그램 자체만 관리자 권한이 필요하며, 이는 애플리케이션을 생성하는 프로그램과는 다릅니다. 이것이 방법 2의 구현과 가장 큰 차이점입니다. 방법 2: 애플리케이션 명예 파일을 추가하는 방법: 프로젝트 새 항목 추가에서 Application Manifest File을 선택한 후 Add 버튼을 클릭하세요 추가되면 app.manifest 파일이 기본적으로 열리며, 다음과 같은 기능을 수행합니다: 수정: 그 다음 프로젝트 속성(Project Properties)을 열고 애플리케이션 탭의 Resources 탭에서 Manifest를 새 app.manifest로 수정하세요. 프로젝트를 재구성하면 프로그램을 다시 열면 관리자 권한으로 실행하라는 메시지가 뜹니다. VS에서 디버깅을 시작하면 이 작업이 애플리케이션에 권한이 상승해야 한다는 안내가 뜨게 됩니다. 아래에 나와 있습니다: 다른 자격 증명으로 재시작을 선택하세요. 방법 3: 프로그램 파일의 속성을 직접 수정하기 속성 대화상자의 호환성 탭에서 프로그램 파일을 우클릭하세요 "관리자 역할로 이 프로그램을 실행하기"를 확인해 보세요.
|