Computer >> 컴퓨터 >  >> 시스템 >> Windows 7

Windows 10에서 특정 프로그램의 UAC 확인 창만 비활성화하는 방법 (RunAsInvoker 활용)

이 글에서는 사용자 계정 컨트롤(UAC) 서비스를 완전히 끄지 않으면서도, 특정 애플리케이션에 대해서만 UAC 확인 창을 표시하지 않는 방법을 소개합니다. RunAsInvoker 호환성 플래그를 활용해 한 앱의 UAC 프롬프트를 제거하는 여러 가지 방법을 살펴보겠습니다.

사용자 계정 컨트롤(User Account Control)은 관리자 권한이 필요한 작업이 실행될 때마다 사용자에게 확인을 요청하는 기능입니다. 바이러스, 트로이목마, 웜, 루트킷 등 각종 위협으로부터 Windows를 보호하는 상당히 효과적인 보안 메커니즘입니다. 일부 사용자는 UAC 창이 계속 뜨는 것이 번거롭다고 느껴 이 기능을 아예 꺼버리기도 하는데, Microsoft와 보안 전문가들은 이를 강력히 경고하고 있습니다.

RunAsInvoker 플래그를 설정하면 애플리케이션이 부모 프로세스에서 상속받은 토큰으로 실행됩니다. 이 경우 앱 매니페스트 처리와 설치 프로그램 감지가 생략됩니다. 다만 이 옵션은 관리자 권한을 부여하는 것이 아니라, 단지 UAC 확인 절차만 건너뛰게 해준다는 점을 기억하세요.

예시로 레지스트리 편집기(regedit.exe)에 대한 UAC 확인 창을 비활성화해 보겠습니다. 계정에 로컬 관리자 권한이 있음에도 유틸리티를 실행하면 여전히 UAC 확인 요청이 나타납니다.

Windows 10에서 특정 프로그램의 UAC 확인 창만 비활성화하는 방법 (RunAsInvoker 활용)

시스템 설정이나 파일 변경 때문에 관리자 권한이 필요한 프로그램이라면, UAC를 꺼도 애플리케이션 내 사용자 권한이 상승하지 않습니다. 프로그램은 여전히 현재 사용자 권한으로 실행되며, 변경 권한이 없다면 해당 작업을 수행할 수 없습니다. 또한 RunAsInvoker 호환성 플래그를 무시하고 '관리자 권한으로 실행' 모드에서만 동작하는 소수의 애플리케이션도 있다는 점에 유의하세요.

목차

  • Application Compatibility Toolkit으로 프로그램의 UAC 비활성화
  • 레지스트리를 통해 RunAsInvoker 플래그 설정하기
  • RunAsInvoker 모드로 앱을 실행하는 배치 파일 만들기

Application Compatibility Toolkit으로 프로그램의 UAC 비활성화

먼저 Windows ADK에 포함된 Application Compatibility Toolkit을 설치해야 합니다. 최신 버전의 Windows ADK for Windows 10을 공식 사이트에서 다운로드하세요.

adksetup.exe 파일을 실행하고, 설치 과정(인터넷 연결 필요)에서 Application Compatibility Tools 항목만 선택합니다.

Microsoft Application Compatibility Tools는 새 Windows 버전으로 마이그레이션할 때 발생하는 앱 호환성 문제를 해결하기 위한 무료 도구 세트입니다.

Windows 10에서 특정 프로그램의 UAC 확인 창만 비활성화하는 방법 (RunAsInvoker 활용)

시스템에는 32비트와 64비트 두 가지 버전의 Application Compatibility Administrator가 있습니다. UAC 확인을 비활성화하려는 애플리케이션의 비트 수에 맞는 버전을 실행하세요.

Windows 10에서 특정 프로그램의 UAC 확인 창만 비활성화하는 방법 (RunAsInvoker 활용)

Compatibility Administrator(32비트)를 반드시 관리자 권한으로 실행합니다(!). Custom Databases 노드에서 New Database를 마우스 오른쪽 버튼으로 클릭하고 Create New -> Application Fix를 선택합니다.

Windows 10에서 특정 프로그램의 UAC 확인 창만 비활성화하는 방법 (RunAsInvoker 활용)

다음 창에서 애플리케이션 이름(regedit), 제조사(Microsoft), 실행 파일 경로(C:\Windows\System32\regedit.exe)를 입력합니다.

Windows 10에서 특정 프로그램의 UAC 확인 창만 비활성화하는 방법 (RunAsInvoker 활용)

구성 마법사의 다음 단계(Compatibility Mode)는 Next를 눌러 건너뜁니다. Compatibility Fixes 창에서 RunAsInvoker 옵션에 체크합니다.

Test Run 버튼을 누르면 앱이 UAC 없이 정상 실행되는지 미리 확인할 수 있습니다.

Windows 10에서 특정 프로그램의 UAC 확인 창만 비활성화하는 방법 (RunAsInvoker 활용)

Matching Information 대화상자에서는 앱의 어떤 매개변수(버전, 체크섬, 크기 등)를 검사할지 지정할 수 있습니다. Windows 10 업데이트 후 호환성 패치 파일을 다시 생성하지 않아도 되도록 COMPANY_NAME, PRODUCT_NAME, ORIGINAL_FILENAME 항목만 체크해 두는 것이 좋습니다.

Windows 10에서 특정 프로그램의 UAC 확인 창만 비활성화하는 방법 (RunAsInvoker 활용)

팁: 해커에 의한 실행 파일 위조를 방지하려면 파일 실행 시 CHECKSUM, FILE_VERSION, FILE_SIZE 같은 추가 검사를 요구할 수 있습니다. 단, 추가 검사는 앱 시작 속도를 다소 늦출 수 있습니다.

Finish를 클릭하고 호환성 수정 패키지를 저장할 파일 이름(예: regedit.sdb)을 지정합니다. 이 파일에는 지정된 호환성 옵션으로 앱을 시작하기 위한 설정이 담기게 됩니다.

Windows 10에서 특정 프로그램의 UAC 확인 창만 비활성화하는 방법 (RunAsInvoker 활용)

이제 호환성 수정 패키지를 애플리케이션에 적용하면 됩니다. Compatibility Administrator 콘솔의 Install 메뉴에서 적용하거나, 명령 프롬프트를 통해서도 가능합니다.

Windows 10에서 특정 프로그램의 UAC 확인 창만 비활성화하는 방법 (RunAsInvoker 활용)

관리자 권한 명령 프롬프트를 열고 다음 명령을 실행합니다:

sdbinst -q c:\ps\regedit.sdb

제대로 완료되면 패키지 설치 성공 메시지가 표시됩니다.

Installation of regedit complete.
Windows 10에서 특정 프로그램의 UAC 확인 창만 비활성화하는 방법 (RunAsInvoker 활용)

패키지가 설치되면 Windows 프로그램 목록(프로그램 및 기능)에 해당 항목이 나타납니다.

Windows 10에서 특정 프로그램의 UAC 확인 창만 비활성화하는 방법 (RunAsInvoker 활용)

이제 로컬 관리자 권한이 없는 사용자 세션에서 앱을 실행해 보세요. UAC 확인 없이 실행될 것입니다.

실행된 앱의 권한 상태도 확인해 보겠습니다. 작업 관리자를 열고 프로세스 탭에서 'Elevated'(권한 상승) 열을 추가합니다. regedit.exe 프로세스가 권한 상승 없이(Elevated = No) 일반 사용자 권한으로 시작되었는지 확인하세요.

Windows 10에서 특정 프로그램의 UAC 확인 창만 비활성화하는 방법 (RunAsInvoker 활용)

이 레지스트리 편집기 프로세스에서 사용자는 자신의 레지스트리 키와 값만 편집할 수 있습니다. 시스템 HKLM 키에서 무언가를 편집·생성하려고 하면 '필요한 권한이 없습니다'라는 오류가 발생합니다.

Windows 10에서 특정 프로그램의 UAC 확인 창만 비활성화하는 방법 (RunAsInvoker 활용)

이렇게 만든 호환성 수정 패키지는 그룹 정책(GPO)을 통해 모든 사용자 PC에 배포할 수 있습니다. 따라서 Active Directory 도메인 환경에서 여러 컴퓨터에 걸쳐 특정 앱의 UAC 확인을 일괄 비활성화할 수 있습니다.

호환성 수정 패키지를 제거하려면 다음 명령을 실행합니다:

sdbinst –u c:\ps\regedit.sdb

레지스트리를 통해 RunAsInvoker 플래그 설정하기

Windows 10/8.1/7에서는 레지스트리를 통해 RUNASINVOKER 호환성 플래그를 설정할 수 있습니다. 이 설정은 특정 사용자에게만 적용하거나, 컴퓨터의 모든 사용자에게 적용할 수도 있습니다.

예를 들어 regedit 앱의 경우 다음 레지스트리 키에 새 문자열 값(REG_SZ)을 생성합니다: HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers

  • 값 이름: C:\windows\regedit.exe
  • 값 데이터: RunAsInvoker
Windows 10에서 특정 프로그램의 UAC 확인 창만 비활성화하는 방법 (RunAsInvoker 활용)

로컬 컴퓨터의 모든 사용자에게 호환성 모드를 적용하려면 아래의 다른 레지스트리 키에 동일한 값을 생성합니다:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers

도메인 환경이라면 GPO를 통해 사용자들에게 이 레지스트리 설정을 배포할 수 있습니다.

RunAsInvoker 모드로 앱을 실행하는 배치 파일 만들기

관리자 권한 없이 UAC 확인을 건너뛰고 프로그램을 실행하는 더 간단한 방법도 있습니다.

아래 코드로 .bat 파일을 하나 만들기만 하면 됩니다:

Set ApplicationPath="C:\windows\regedit.exe"
cmd /min /C "set __COMPAT_LAYER=RUNASINVOKER && start "" %ApplicationPath%"
Windows 10에서 특정 프로그램의 UAC 확인 창만 비활성화하는 방법 (RunAsInvoker 활용)

일반 사용자가 이 배치 파일을 실행하면 지정된 애플리케이션이 UAC 확인 창 없이 바로 시작됩니다.

지금까지 User Account Control을 완전히 끄지 않고도 특정 프로그램의 UAC만 비활성화하는 방법을 알아보았습니다. 이를 통해 관리자가 아닌 사용자도 UAC 확인 창이나 관리자 암호 입력 없이 필요한 Windows 프로그램을 실행할 수 있습니다.