UAC(User Account Control, 사용자 계정 컨트롤)는 Windows 보안의 핵심 구성 요소입니다. 관리자 권한이 필요한 응용 프로그램을 실행하거나 시스템 설정, 보호된 레지스트리 키, 시스템 파일을 변경하려고 하면 UAC는 데스크톱을 보호 모드(Secure Desktop)로 전환한 뒤 관리자에게 해당 작업에 대한 확인을 요청합니다. 이를 통해 잠재적으로 시스템에 피해를 줄 수 있는 프로세스나 악성코드 실행을 사전에 차단할 수 있습니다.
아래 화면은 Windows 10에서 레지스트리 편집기(regedit.exe)를 실행하려 할 때 표시되는 UAC 확인 창입니다.
User Account Control Do you want to allow this app to make changes to your device?

참고로 Windows 10에서 기본적으로 비활성화되어 있는 기본 제공 Administrator 계정에는 UAC가 적용되지 않습니다.
이 글에서는 단일 PC뿐 아니라 도메인 환경의 여러 컴퓨터를 그룹 정책(Group Policy)으로 관리하며 UAC 설정을 제어하는 방법을 살펴보겠습니다.
Windows 10의 UAC 슬라이더 보호 수준
Windows 7 이후 버전에서는 제어판 또는 UserAccountControlSettings.exe 파일로 호출할 수 있는 특수한 슬라이더를 통해 UAC 설정을 조정합니다. 이 슬라이더로 네 가지 사전 정의된 보호 수준 중 하나를 선택할 수 있습니다.
- 수준 4 — 항상 알림(Always notify): 가장 강력한 UAC 보호 수준
- 수준 3 — 프로그램이 내 컴퓨터를 변경하려 할 때만 알림(기본값): Windows 기본 보호 수준
- 수준 2 — 프로그램이 변경을 시도할 때만 알림(바탕 화면 흐리게 표시 안 함): 수준 3과 거의 동일하지만 Secure Desktop 전환 없이 알림만 표시
- 수준 1 — 알림 안 함(Never notify): UAC 완전히 비활성화

Windows 10은 기본적으로 수준 3을 사용하며, 이 경우 시스템 파일이나 설정을 변경하려고 시도할 때만 알림이 표시됩니다.
그룹 정책(GPO)으로 UAC 비활성화하기
대부분의 경우 UAC를 완전히 비활성화하는 것은 권장되지 않습니다. 사용자 계정 컨트롤은 간단하지만 효과적인 Windows 보안 도구입니다. 실무에서도 특정 기능이 UAC에 의해 차단된다는 것이 명확히 확인되지 않는 한 사용자 PC에서 UAC를 끄지 않는 것이 좋습니다. 만약 문제가 발생하더라도 특정 응용 프로그램에 한해 UAC를 우회하거나, 관리자 권한 없이 앱을 실행하고 UAC 확인 창을 억제하는 간단한 방법들이 존재합니다.
그럼에도 불구하고 그룹 정책으로 UAC를 비활성화해야 한다면 다음 절차를 따르면 됩니다. 단독 컴퓨터에서는 로컬 그룹 정책 편집기(gpedit.msc)를 사용하고, 도메인 컴퓨터에 배포하려면 GPMC(gpmc.msc) 콘솔을 사용해야 합니다.
- GPO 관리 콘솔에서 UAC를 비활성화할 컴퓨터가 속한 OU를 선택하고 새 정책 개체를 생성합니다.

- 정책을 편집한 후 컴퓨터 구성 → 정책 → Windows 설정 → 보안 설정 → 로컬 정책 → 보안 옵션으로 이동합니다.
- 이 섹션에는 이름이 사용자 계정 컨트롤: (User Account Control:)로 시작하는 여러 UAC 관련 옵션이 있습니다.

- UAC를 완전히 비활성화하려면 아래 매개변수 값을 지정합니다.
- 사용자 계정 컨트롤: 관리 승인 모드에서 관리자에 대한 권한 상승 확인 동작 =
권한 상승 시 확인 안 함(Elevate without prompting) - 사용자 계정 컨트롤: 응용 프로그램 설치 검색 및 권한 상승 확인 =
사용 안 함(Disabled) - 사용자 계정 컨트롤: 관리자 승인 모드에서 모든 관리자 실행 =
사용 안 함(Disabled) - 사용자 계정 컨트롤: 보안 위치에 설치된 UIAccess 응용 프로그램만 권한 상승 =
사용 안 함(Disabled)

- 사용자 계정 컨트롤: 관리 승인 모드에서 관리자에 대한 권한 상승 확인 동작 =
- 정책 설정 적용 후 클라이언트 컴퓨터를 재부팅하면 UAC가 '알림 안 함' 모드로 전환되어 비활성화됩니다.
레지스트리 기본 설정(GPP)으로 특정 대상에만 UAC 비활성화하기
일부 사용자/컴퓨터에만 UAC를 비활성화하려면 레지스트리 값을 그룹 정책 기본 설정(Group Policy Preferences)으로 배포할 수 있습니다.
GPO에서 컴퓨터 구성 → 기본 설정 → Windows 설정 → 레지스트리 섹션에 새 레지스트리 항목을 아래와 같이 생성합니다.
- 작업(Action): 바꾸기(Replace)
- Hive: HKEY_LOCAL_MACHINE
- 키 경로(Key Path): SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System
- 값 이름(Value name): EnableLUA
- 값 형식(Value type): REG_DWORD
- 값 데이터(Value data): 0

그다음 공통(Common) 탭에서 다음 두 옵션을 활성화합니다.
- 더 이상 적용되지 않으면 이 항목 제거(Remove this item when it is no longer applied)
- 항목 수준 대상 지정(Item-Level targeting)
대상 지정(Targeting) 버튼을 클릭해 UAC 비활성화 정책을 적용할 컴퓨터 또는 도메인 보안 그룹을 지정하면 됩니다.
단, UAC를 비활성화했더라도 일부 응용 프로그램은 "관리자가 이 앱을 차단했습니다(This app has been blocked for your protection.)" 메시지와 함께 실행이 차단될 수 있으니 유의하세요.
UAC 관련 레지스트리 키 설정
UAC 동작은 레지스트리로 직접 관리할 수도 있습니다. 사용자 계정 컨트롤의 동작을 결정하는 매개변수들은 HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System 키에 위치합니다.
제어판에서 UAC 슬라이더 값을 변경하면 Windows는 아래와 같이 해당 레지스트리 값을 수정합니다(각 슬라이더 수준별 REG 파일 내용).
UAC 수준 4 (항상 알림):
Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System] "ConsentPromptBehaviorAdmin"=dword:00000002 "ConsentPromptBehaviorUser"=dword:00000003 "EnableInstallerDetection"=dword:00000001 "EnableLUA"=dword:00000001 "EnableVirtualization"=dword:00000001 "PromptOnSecureDesktop"=dword:00000001 "ValidateAdminCodeSignatures"=dword:00000000 "FilterAdministratorToken"=dword:00000000
UAC 수준 3 (프로그램이 변경을 시도할 때만 알림 — 기본값):
"ConsentPromptBehaviorAdmin"=dword:00000005 "ConsentPromptBehaviorUser"=dword:00000003 "EnableInstallerDetection"=dword:00000001 "EnableLUA"=dword:00000001 "EnableVirtualization"=dword:00000001 "PromptOnSecureDesktop"=dword:00000001 "ValidateAdminCodeSignatures"=dword:00000000 "FilterAdministratorToken"=dword:00000000
UAC 수준 2:
"ConsentPromptBehaviorAdmin"=dword:00000005 "ConsentPromptBehaviorUser"=dword:00000003 "EnableInstallerDetection"=dword:00000001 "EnableLUA"=dword:00000001 "EnableVirtualization"=dword:00000001 "PromptOnSecureDesktop"=dword:00000000 "ValidateAdminCodeSignatures"=dword:00000000 "FilterAdministratorToken"=dword:00000000
UAC 수준 1 (알림 안 함 — UAC 완전 비활성화):
"ConsentPromptBehaviorAdmin"=dword:00000000 "ConsentPromptBehaviorUser"=dword:00000003 "EnableInstallerDetection"=dword:00000001 "EnableLUA"=dword:00000001 "EnableVirtualization"=dword:00000001 "PromptOnSecureDesktop"=dword:00000000 "ValidateAdminCodeSignatures"=dword:00000000 "FilterAdministratorToken"=dword:00000000

각 매개변수 값은 레지스트리 편집기 GUI 또는 명령 프롬프트에서 변경할 수 있습니다. 예를 들어 컴퓨터에서 UAC를 비활성화하려면(재부팅 필요) 다음 명령을 실행합니다.
reg.exe ADD HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System /v EnableLUA /t REG_DWORD /d 0 /f.
PowerShell을 사용한다면 아래 명령을 사용할 수 있습니다.
New-ItemProperty -Path HKLM:Software\Microsoft\Windows\CurrentVersion\policies\system -Name EnableLUA -PropertyType DWord -Value 0 -Force
같은 레지스트리 경로에는 LocalAccountTokenFilterPolicy라는 매개변수도 있는데, 이는 흔히 Remote UAC라고 불립니다. 이 매개변수는 로컬 관리자 계정을 통한 원격 연결 시 기본 관리 공유(administrative shares) 접근을 제한하는 역할을 합니다.
Windows Server의 사용자 계정 컨트롤
Windows Server의 UAC는 데스크톱 Windows와 동일하게 작동하고 관리됩니다.
아래 조건이 충족된다면 Windows Server 2016/2019에서 UAC를 완전히 비활성화하는 것도 허용됩니다.
- 서버 데스크톱(RDP)에 대한 원격 액세스는 관리자에게만 허용되어야 합니다(비관리자 사용자의 RDP 접근은 반드시 차단). RDS 호스트에서는 UAC를 활성화 상태로 유지해야 합니다.
- 관리자는 Windows Server를 오직 서버 관리 작업에만 사용해야 합니다. 사무용 문서 작업, 메신저, 웹 브라우저 등의 업무는 UAC가 활성화된 워크스테이션의 비권한(non-privileged) 사용자 계정으로 수행하고, 서버 호스트에서는 수행하지 않는 것이 좋습니다(관리자 계정 보호 모범 사례 참조).
참고로 Windows Server Core 에디션에서는 UAC가 항상 비활성화되어 있습니다.
UAC가 활성화된 경우 Windows Server에서는 로컬 컴퓨터 계정으로 원격 연결(net use, winrm, PowerShell Remoting)이 제한될 수 있습니다. 이는 UAC의 LocalAccountTokenFilterPolicy 매개변수가 사용자 토큰을 필터링하기 때문입니다(앞서 소개한 Remote UAC).
UAC 슬라이더와 그룹 정책 설정의 대응 관계
UAC는 슬라이더와 GPO 두 가지 방법으로 관리할 수 있습니다. 다만 슬라이더의 4단계 보호 수준을 그대로 선택할 수 있는 단일 그룹 정책 매개변수는 존재하지 않으며, 대신 10개의 개별 GPO 매개변수로 세밀하게 제어해야 합니다. 해당 정책들은 컴퓨터 구성 → 정책 → Windows 설정 → 보안 설정 → 로컬 정책 → 보안 옵션 섹션에 있으며, 이름이 사용자 계정 컨트롤(User Account Control)로 시작하는 항목들입니다.

아래 표는 UAC 관련 그룹 정책 매개변수와 이에 대응하는 레지스트리 키 목록입니다.
| 정책 이름 | 정책이 설정하는 레지스트리 매개변수 |
| 사용자 계정 컨트롤: 기본 제공 Administrator 계정에 대한 관리자 승인 모드 | FilterAdministratorToken |
| 사용자 계정 컨트롤: UIAccess 응용 프로그램이 보안 데스크톱을 사용하지 않고 권한 상승 확인 요청 허용 | EnableUIADesktopToggle |
| 사용자 계정 컨트롤: 관리자 승인 모드에서 관리자에 대한 권한 상승 확인 동작 | ConsentPromptBehaviorAdmin |
| 사용자 계정 컨트롤: 표준 사용자에 대한 권한 상승 확인 동작 | ConsentPromptBehaviorUser |
| 사용자 계정 컨트롤: 응용 프로그램 설치 검색 및 권한 상승 확인 | EnableInstallerDetection |
| 사용자 계정 컨트롤: 서명 및 유효성이 검증된 실행 파일만 권한 상승 | ValidateAdminCodeSignatures |
| 사용자 계정 컨트롤: 보안 위치에 설치된 UIAccess 응용 프로그램만 권한 상승 | EnableSecureUIAPaths |
| 사용자 계정 컨트롤: 관리자 승인 모드에서 모든 관리자 실행 | EnableLUA |
| 사용자 계정 컨트롤: 권한 상승 요청 시 보안 데스크톱으로 전환 | PromptOnSecureDesktop |
| 사용자 계정 컨트롤: 파일 및 레지스트리 쓰기 실패를 사용자별 위치로 가상화 | EnableVirtualization |
참고로 기본 UAC 수준 3에 해당하는 그룹 정책 설정값은 다음과 같습니다.
UAC 수준 3 (기본값)
기본 제공 Administrator 계정에 대한 관리자 승인 모드 = 사용 안 함(Disabled)
UIAccess 응용 프로그램이 보안 데스크톱 없이 권한 상승 요청 허용 = 사용 안 함(Disabled)
관리자 승인 모드에서 관리자에 대한 권한 상승 확인 동작 = 비 Windows 바이너리에 대한 동의 확인(Prompt for consent for non-Windows binaries)
표준 사용자에 대한 권한 상승 확인 동작 = 보안 데스크톱에서 자격 증명 확인(Prompt for credentials on the secure desktop)
응용 프로그램 설치 검색 및 권한 상승 확인 = 사용(Enabled)(워크그룹 환경), 사용 안 함(Disabled)(도메인 가입 장치)
서명 및 유효성이 검증된 실행 파일만 권한 상승 = 사용 안 함(Disabled)
보안 위치에 설치된 UIAccess 응용 프로그램만 권한 상승 = 사용(Enabled)
관리자 승인 모드에서 모든 관리자 실행 = 사용(Enabled)
권한 상승 요청 시 보안 데스크톱으로 전환 = 사용(Enabled)
파일 및 레지스트리 쓰기 실패를 사용자별 위치로 가상화 = 사용(Enabled)