UAC(사용자 계정 컨트롤)가 애플리케이션에 주는 영향
UAC(사용자 계정 컨트롤)는 사용자 계정의 권한을 제한하는 Windows Vista의 기능입니다. UAC에 대한 자세한 정보는 다음 사이트에서 찾아볼 수 있습니다.
UAC를 사용하도록 설정한 후에 프로젝트 빌드
UAC를 사용하지 않도록 설정한 상태에서 Windows Vista에서 Visual Studio C++ 프로젝트를 빌드하고 나중에 UAC를 사용하도록 설정하는 경우 프로젝트를 정리하고 다시 빌드해야 제대로 작동합니다.
관리 권한이 필요한 애플리케이션
기본적으로 Visual C++ 링커는 asInvoker
실행 수준이 있는 애플리케이션의 매니페스트에 UAC 조각을 포함합니다. 관리 권한이 있어야 애플리케이션이 제대로 실행되는 경우(예: 레지스트리의 HKLM 노드를 수정하거나 Windows 디렉터리와 같은 디스크의 보호된 영역에 쓰는 경우) 애플리케이션을 수정해야 합니다.
첫 번째 옵션은 매니페스트의 UAC 조각을 수정하여 실행 수준을 requireAdministrator로 변경하는 것입니다. 그러면 애플리케이션이 실행되기 전에 사용자에게 관리자 자격 증명을 요구합니다. 이 작업을 수행하는 방법에 대한 자세한 내용은 /MANIFESTUAC(매니페스트에 UAC 정보 포함)를 참조하세요.
두 번째 옵션은 /MANIFESTUAC:NO
링커 옵션을 지정하여 UAC 조각을 매니페스트에 포함하지 않는 것입니다. 이 경우에는 애플리케이션이 가상화되어 실행됩니다. 레지스트리 또는 파일 시스템의 변경 사항은 애플리케이션이 종료된 후에 유지되지 않습니다.
다음 순서도는 UAC의 사용 여부와 애플리케이션에 UAC 매니페스트가 있는지 여부에 따라 애플리케이션이 어떻게 실행되는지를 설명합니다.