사용자 계정 컨트롤

참고

이 디자인 가이드는 Windows 7용으로 만들어졌으며 최신 버전의 Windows 업데이트되지 않았습니다. 대부분의 지침은 여전히 원칙으로 적용되지만 프레젠테이션 및 예제에는 현재 디자인 지침이 반영되지 않습니다.

잘 디자인된 사용자 계정 컨트롤 환경을 사용하면 예측 가능하고 최소한의 노력이 필요한 방식으로 원치 않는 시스템 차원의 변경을 방지할 수 있습니다.

UAC(사용자 계정 컨트롤)를 완전히 사용하도록 설정하면 대화형 관리자는 일반적으로 최소 사용자 권한으로 실행되지만 동의 UI에 명시적 동의를 제공하여 관리 작업을 수행하도록 자체 승격할 수 있습니다. 이러한 관리 작업에는 소프트웨어 및 드라이버 설치, 시스템 전체 설정 변경, 다른 사용자 계정 보기 또는 변경, 관리 도구 실행이 포함됩니다.

최소 권한 상태에서 관리자는 보호된 관리자라고 합니다. 관리자 권한 상태에서 관리자 권한 관리자라고 합니다. 반면, 표준 사용자는 스스로 승격할 수 없지만 관리자에게 자격 증명 UI를 사용하여 관리자를 승격하도록 요청할 수 있습니다. 기본 제공 관리자 계정에는 권한 상승이 필요하지 않습니다.

screen shot of 'allow program' security message

관리자 권한을 갖도록 보호된 관리자를 승격하는 데 사용되는 동의 UI입니다.

screen shot of message asking for password

표준 사용자를 상승시키는 데 사용되는 자격 증명 UI입니다.

UAC는 다음과 같은 이점을 제공합니다.

  • 이렇게 하면 상승된 권한으로 실행되는 프로그램 수가 줄어들어 사용자가 실수로 시스템 설정을 변경하지 못하게 하고 "맬웨어"가 시스템 전체 액세스 권한을 얻지 못하도록 방지할 수 있습니다. 권한 상승이 거부되면 맬웨어는 현재 사용자의 데이터에만 영향을 줄 수 있습니다. 권한 상승이 없으면 맬웨어가 시스템 차원을 변경하거나 다른 사용자에게 영향을 줄 수 없습니다.
  • 관리되는 환경의 경우 잘 설계된 UAC 환경을 사용하면 불필요한 제한을 제거하여 표준 사용자로 실행할 때 생산성을 높일 수 있습니다.
  • 이를 통해 표준 사용자는 관리자에게 현재 세션 내에서 관리 작업을 수행할 수 있는 권한을 부여하도록 요청할 수 있습니다.
  • 가정 환경의 경우 설치된 소프트웨어를 포함하여 시스템 차원의 변화에 대한 자녀 보호 기능을 향상할 수 있습니다.

개발자: 구현 정보는 UAC 호환성을 위해 UI 다시 설계를 참조하세요.

Windows Vista에서 보호된 관리자는 모든 시스템 변경 내용 또는 없음에 대한 알림을 받도록 선택할 수 있습니다. UAC 기본 설정은 원본에 관계없이 모든 변경 내용을 알리는 것입니다. 알림을 받으면 데스크톱이 흐리게 표시되고 UAC 대화 상자에서 요청을 승인하거나 거부해야 컴퓨터에서 다른 작업을 수행할 수 있습니다. 데스크톱의 디밍은 흐리게 표시되는 동안 다른 프로그램을 실행할 수 없으므로 보안 데스크톱 이라고 합니다.

Windows 7에는 보호된 관리자를 위한 두 가지 중간 UAC 설정과 Windows Vista의 두 가지 중간 UAC 설정이 도입되었습니다. 첫 번째는 프로그램이 변경될 때만 사용자에게 알리는 것이므로 관리자가 직접 변경할 때 관리자가 자동으로 상승됩니다. Windows 7의 UAC 기본 설정이며 보안 데스크톱도 사용합니다.

Windows 7의 두 번째 중간 설정은 보안 데스크톱을 사용하지 않는다는 점을 제외하고 첫 번째 설정과 동일합니다.

screen shot of four uac settings in windows 7

Windows 7에는 두 개의 중간 UAC 설정이 도입되었습니다.

참고:사용자 계정 컨트롤을 지원하는 코드 작성과 관련된 지침은 별도의 문서에 제공됩니다.

설계 개념

목표

잘 디자인된 사용자 계정 컨트롤 환경에는 다음과 같은 목표가 있습니다.

  • 불필요한 권한 상승을 제거합니다. 사용자는 관리자 권한이 필요한 작업을 수행하기 위해서만 상승해야 합니다. 다른 모든 작업은 권한 상승이 필요하지 않도록 설계되어야 합니다. 레거시 소프트웨어는 종종 HKLM 또는 HKCR 레지스트리 섹션 또는 프로그램 파일 또는 Windows 시스템 폴더에 작성하여 불필요하게 관리자 권한이 필요합니다.
  • 예측 가능 표준 사용자는 관리되는 환경에서 관리자가 수행해야 하거나 전혀 수행할 수 없는 작업을 알아야 합니다. 관리자는 상승이 필요한 작업을 알아야 합니다. 권한 상승의 필요성을 정확하게 예측할 수 없는 경우 관리 작업에 동의하면 안 되는 경우 동의할 가능성이 높습니다.
  • 최소한의 노력이 필요합니다. 관리자 권한이 필요한 작업은 단일 권한 상승이 필요하도록 설계되어야 합니다. 여러 권한 상승이 필요한 작업은 빠르게 지루해집니다.
  • 최소 권한으로 되돌려 줍니다. 관리 권한이 필요한 작업이 완료되면 프로그램은 최소 권한 상태로 되돌려야 합니다.

권한 상승 작업 흐름

작업에 권한 상승이 필요한 경우 다음 단계가 있습니다.

  1. 진입점. UAC가 완전히 활성화된 경우 즉시 상승이 필요한 작업에는 UAC 방패로 표시된 진입점이 있습니다. 이 경우 사용자는 이러한 명령을 클릭한 직후에 권한 상승 UI가 표시될 것으로 예상해야 하며, 방패가 없는 작업에서 권한 상승 UI가 표시될 때는 매우 주의해야 합니다.

    screen shot of uac shield icons and their labels

    이 예제에서는 자녀 보호 및 사용자 계정 제어판 항목에 상승이 필요합니다.

    UAC를 부분적으로 사용하거나 완전히 해제한 경우에도 UAC 실드가 계속 표시되어 작업에 시스템 수준 변경이 포함되므로 사용자에게 권한 상승 UI가 표시되지 않더라도 권한 상승이 필요함을 나타냅니다. 항상 상승이 필요한 작업의 UAC 방패를 표시하면 UI가 간단하고 예측 가능해집니다.

  2. 해발 고 도. 보호된 관리자의 경우 태스크는 동의 UI를 사용하여 동의를 요청합니다. 표준 사용자의 경우 작업은 자격 증명 UI를 사용하여 관리자 자격 증명을 요청합니다.

    screen shot of two types of elevation

    다음 예제에서는 자격 증명 UI 및 동의 UI를 보여 줍니다.

  3. 관리자 권한 프로세스를 분리합니다. 내부적으로 작업을 수행하기 위해 상승된 새 프로세스가 만들어집니다.

  4. 최소 권한으로 되돌려 갑니다. 필요한 경우 권한 상승이 필요하지 않은 단계를 완료하려면 최소 권한으로 되돌려야 합니다.

작업은 상승된 상태를 "기억"하지 않습니다. 예를 들어 사용자가 마법사의 권한 상승 진입점을 앞뒤로 탐색하는 경우 사용자는 매번 상승해야 합니다.

사용 패턴

사용자 계정 컨트롤에는 몇 가지 사용 패턴(기본 설정 순서)이 있습니다.

  1. 표준 사용자를 위해 작업합니다. 범위를 현재 사용자로 제한하여 모든 사용자에 대한 기능을 디자인합니다. 설정을 시스템 전체와 달리 현재 사용자로 제한하면 권한 상승 UI가 완전히 필요하지 않으며 사용자가 작업을 완료할 수 있습니다.

    잘못된 예:

    screen shot of message: you do not have privilege

    이 예제에서 Windows XP 사용자는 현재 표준 시간대를 보거나 변경할 수 있는 관리자 권한이 있어야 했습니다.

    올바름:

    screen shot of date and time dialog box

    이 예제에서 표준 시간대 기능은 모든 사용자에 대해 작동하도록 Windows 7 및 Windows Vista에서 다시 디자인되었습니다.

  2. 표준 사용자 및 관리자를 위한 별도의 UI 요소가 있습니다. 표준 사용자 작업을 관리 작업과 명확하게 구분합니다. 모든 사용자에게 유용한 읽기 전용 정보에 대한 액세스 권한을 부여합니다. UAC 방패를 사용하여 관리 작업을 명확하게 식별합니다.

    graphic of uac shield showing elevation required

    이 예제에서 시스템 제어판 항목은 모든 사용자에게 상태를 표시하지만 시스템 전체 설정을 변경하려면 권한 상승이 필요합니다.

  3. 표준 사용자가 작업을 시도하고 실패할 때 상승하도록 허용합니다. 표준 사용자가 정보를 볼 수 있고 권한 상승 없이 일부 변경을 수행할 수 있는 경우 UI에 액세스하여 작업이 실패하는 경우에만 관리자 권한으로 승격하도록 허용합니다. 이 방법은 표준 사용자가 Windows 탐색기에서 자체 파일의 속성을 사용하는 등 제한된 액세스 권한이 있는 경우에 적합합니다. 제어판 하이브리드 허브 페이지의 설정에도 적합합니다.

    screen shot of access is denied message

    이 예제에서 사용자는 프로그램 파일 속성을 변경하려고 했지만 충분한 권한이 없었습니다. 사용자가 상승하고 다시 시도할 수 있습니다.

  4. 관리자만 작업합니다. 이 방법은 관리자 기능 및 프로그램에만 사용합니다. 기능이 관리자만을 위한 것이며(탐색 경로 또는 표준 사용자에 대한 유용한 읽기 전용 정보가 없는 경우) UI를 표시하기 전에 진입점에서 관리자 자격 증명을 묻는 메시지를 표시할 수 있습니다. 모든 경로에 관리 권한이 필요한 경우 긴 마법사 및 페이지 흐름 에 이 방법을 사용합니다.

    전체 프로그램이 관리자 전용인 경우 시작하려면 관리자 자격 증명을 묻는 메시지를 표시합니다. Windows UAC 실드 오버레이를 사용하여 이러한 프로그램 아이콘을 표시합니다.

    screen shot of windows logo and uac shield overlay

    이 예제에서는 프로그램을 시작하려면 관리자 권한이 필요합니다.

지침

UAC 방패 아이콘

  • UAC가 현재 완전히 활성화되어 있지 않더라도 UAC가 완전히 활성화된 경우 작업에 즉시 상승이 필요함을 나타내기 위해 UAC 방패가 있는 컨트롤을 표시합니다. 마법사 및 페이지 흐름 의 모든 경로에 상승이 필요한 경우 작업의 진입점에 UAC 방패를 표시합니다. UAC 실드를 적절하게 사용하면 사용자가 상승이 필요한 시기를 예측할 수 있습니다.

  • 프로그램에서 여러 버전의 Windows 지원하는 경우 하나 이상의 버전에 상승이 필요한 경우 UAC 방패를 표시합니다. Windows XP에는 상승이 필요하지 않으므로 성능에 해를 끼치지 않고 일관되게 수행할 수 있는 경우 Windows XP용 UAC 보호막을 제거하는 것이 좋습니다.

  • 대부분의 컨텍스트에서 상승이 필요하지 않은 작업에는 UAC 방패를 표시하지 마세요. 이 방법은 때때로 오해의 소지가 있기 때문에 적절하게 보호된 컨텍스트 명령을 대신 사용하는 것이 좋습니다.

    screen shot of photo files in windows explorer

    새 폴더 명령은 시스템 폴더에 사용되는 경우에만 상승이 필요하므로 UAC 보호 장치 없이 표시됩니다.

  • UAC 방패는 다음 컨트롤에 표시될 수 있습니다.

    명령 단추:

    screen shot of command button with uac shield icon

    즉각적인 상승이 필요한 명령 단추입니다.

    명령 링크:

    screen shot of command link with uac shield icon

    즉각적인 상승이 필요한 명령 링크입니다.

    링크:

    screen shot of change account link with uac shield

    즉각적인 상승이 필요한 링크입니다.

    메뉴:

    screen shot of menu with uac shield

    즉시 상승이 필요한 드롭다운 메뉴입니다.

  • 작업은 상승된 상태를 기억하지 못하므로 상태를 반영하도록 UAC 보호막을 변경하지 마세요.

  • 사용자 계정 컨트롤이 꺼져 있거나 사용자가 기본 제공 관리자 계정을 사용하는 경우에도 UAC 방패를 표시합니다. UAC 방패를 일관되게 표시하면 프로그래밍이 더 쉬우며 사용자에게 작업의 특성에 대한 정보를 제공합니다.

상승

  • 가능하면 권한 상승 없이 표준 사용자가 수행할 작업을 디자인합니다. 모든 사용자에게 유용한 읽기 전용 정보에 대한 액세스 권한을 부여합니다.

  • 설정 기준이 아닌 작업 단위로 상승합니다. 단일 페이지 또는 대화 상자에서 표준 사용자 설정을 관리 설정과 혼합하지 마세요. 예를 들어 표준 사용자가 일부 설정을 변경할 수 있지만 일부 설정을 변경할 수 있는 경우 해당 설정을 별도의 UI 화면으로 분할합니다.

    잘못된 예:

    screen shot of date and time settings dialog box

    이 예제에서는 표준 사용자 설정이 관리 설정과 잘못 혼합됩니다.

    올바름:

    screen shot of same dialog box without uac shields

    이 예제에서 날짜 및 시간을 변경하는 설정은 관리자만 사용할 수 있는 별도의 대화 상자에 있습니다. 표준 시간대 설정은 표준 사용자가 사용할 수 있으며 관리 설정과 혼합되지 않습니다.

  • 컨트롤을 표시하거나 사용하지 않도록 설정해야 하는지를 결정할 때는 상승해야 할 필요가 없습니다. 그 이유는 다음과 같습니다.

    • 관리되지 않는 환경에서는 표준 사용자가 관리자에게 요청하여 승격할 수 있다고 가정합니다. 권한 상승이 필요한 컨트롤을 사용하지 않도록 설정하면 사용자가 관리자를 승격할 수 없습니다.
    • 관리되는 환경에서는 표준 사용자가 전혀 상승할 수 없다고 가정합니다. 상승이 필요한 컨트롤을 제거하면 사용자가 검색을 중지해야 하는 시기를 알 수 없습니다.
  • 불필요한 권한 상승을 제거하려면 다음을 수행합니다.

    • 작업에 상승이 필요할 수 있는 경우 가능한 한 늦게 상승합니다. 작업에 확인이 필요한 경우 사용자가 확인한 후에만 권한 상승 UI를 표시합니다. 태스크에 항상 상승이 필요한 경우 진입점에서 상승합니다.
    • 상승된 후에는 상승된 권한이 더 이상 필요하지 않을 때까지 상승된 상태를 유지합니다. 사용자는 단일 작업을 수행하기 위해 여러 번 상승할 필요가 없습니다.
    • 사용자가 변경을 위해 상승해야 하지만 변경하지 않도록 선택한 경우 양수 커밋 단추를 사용하도록 설정하지만 커밋을 취소로 처리합니다. 이렇게 하면 창을 닫기 위해 상승해야 하는 사용자가 제거됩니다.
    • 잘못된 예:
    • screen shot of window with only one button active
    • 이 예제에서는 불필요한 권한 상승을 방지하기 위해 변경 내용 저장 단추를 사용할 수 없지만 사용자가 선택을 변경할 때 활성화됩니다. 그러나 사용하지 않도록 설정된 커밋 단추를 사용하면 사용자가 실제로 선택의 여지가 없는 것처럼 보입니다.
  • 사용자가 상승하지 않도록 선택했기 때문에 작업이 실패할 때 오류 메시지를 표시하지 마세요. 사용자가 의도적으로 진행하지 않도록 선택했기 때문에 이 상황을 오류로 간주하지 않는다고 가정합니다.

    잘못된 예:

    screen shot of message: fabrikam restore can't run

    이 예제에서 Fabrikam Restore는 사용자가 상승하지 않기로 결정할 때 오류 메시지를 잘못 제공합니다.

  • 사용자가 작업을 수행하기 위해 권한을 상승시켜야 할 수 있음을 설명하는 경고를 표시하지 마세요. 사용자가 이 사실을 직접 검색할 수 있도록 합니다.

  • 다음 표에 따라 UAC 보호 및 권한 상승 UI를 표시합니다.

    Object 상황 UAC 방패를 넣을 위치 상승해야 하는 경우
    프로그램
    전체 프로그램은 관리자 전용입니다.
    screen shot of windows logo and uac shield overlay
    프로그램 아이콘의 UAC 실드 오버레이입니다.
    시작 시 권한 상승 UI를 표시합니다.
    명령
    전체 명령은 관리자 전용입니다.
    screen shot of change account link and uac shield
    명령 단추 또는 링크의 UAC 실드입니다.
    명령 단추 또는 링크를 클릭할 때는 확인 후에 권한 상승 UI를 표시합니다.
    명령
    명령은 모든 사용자에게 적합한 유용한 읽기 전용 정보를 표시하지만 변경하려면 관리 권한이 필요합니다.
    screen shot of change settings link and uac shield
    UAC 쉴드 on command button 또는 link to make changes.
    명령 단추를 클릭할 때는 확인 후 권한 상승 UI를 표시합니다.
    명령
    표준 사용자는 정보를 보고 권한 상승 없이 일부 변경을 수행할 수 있습니다. 표준 사용자가 시도하고 실패할 때 상승하도록 허용합니다.
    screen shot of error with uac icon on retry button
    명령에 대한 UAC 실드를 표시하지 않고 명령이 실패하면 권한 상승 진입점에 대해 표시합니다.
    사용자가 명령을 다시 시도하면 권한 상승 UI를 표시합니다.
    작업 단계
    모든 후속 단계에는 권한 상승이 필요합니다.
    screen shot of next command button with uac shield
    다음 단추(또는 해당)의 UAC 실드입니다.
    다음 또는 다른 커밋 단추를 클릭할 때 권한 상승 UI를 표시합니다.
    작업 단계
    일부 분기에는 권한 상승이 필요합니다.
    screen shot of command link with uac shield
    권한 상승이 필요한 명령 링크의 UAC 보호
    UAC 실드가 있는 명령 링크를 클릭하면 권한 상승 UI를 표시합니다.

권한 상승 UI

  • 사용자가 유효하지 않거나(이름 또는 암호) 관리자 권한이 없는 계정을 제공하는 경우 자격 증명 UI를 다시 표시하기만 하면 됩니다. 오류 메시지를 표시하지 마세요.
  • 사용자가 자격 증명 UI를 취소하는 경우 사용자를 원래 UI로 다시 반환합니다. 오류 메시지를 표시하지 마세요.
  • 사용자 계정 컨트롤이 꺼져 있고 표준 사용자가 권한 상승이 필요한 작업을 수행하려고 하면 "이 작업에는 관리자 권한이 필요합니다. 이 작업을 수행하려면 관리자 계정을 사용하여 로그온해야 합니다."

screen shot of task requires privileges message

이 예제에서는 사용자 계정 컨트롤이 꺼져 있으므로 사용자가 관리자 계정을 사용해야 한다는 오류 메시지가 표시됩니다.

마법사

  • 여러 번 상승하지 마세요. 마법사가 상승되면 상승 상태를 유지해야 합니다.
  • 마법사 내에서 작업을 수행하는 경우 커밋 페이지의 "다음" 단추(보다 구체적인 레이블을 지정해야 함)에 UAC 방패를 놓습니다. 사용자가 커밋하는 경우:
    • 다음 페이지가 진행률 페이지인 경우 해당 페이지로 이동하여 권한 상승 UI를 모달로 표시합니다. 승격이 성공하면 작업을 수행합니다.
    • 다음 페이지가 완료 페이지인 경우 해당 페이지로 이동(하지만 일시적으로 콘텐츠를 "사용 권한 대기 중..."으로 대체)하고 권한 상승 UI를 모달로 표시합니다. 승격이 성공하면 작업을 수행한 다음 완료 페이지 콘텐츠를 표시합니다.
    • 사용자가 권한 상승 UI를 취소하면 커밋 페이지로 돌아갑니다. 이렇게 하면 사용자가 다시 시도할 수 있습니다.
  • 마법사가 완료된 후 작업이 수행되면 커밋 페이지의 "마침" 단추(보다 구체적인 레이블을 지정해야 함)에 UAC 방패를 놓습니다. 사용자가 커밋하는 경우:
    • 커밋 페이지에 남아 있고 권한 상승 UI를 모듈식으로 표시합니다. 권한 상승에 성공하면 마법사를 닫습니다.
    • 사용자가 권한 상승 UI를 취소하면 커밋 페이지로 돌아갑니다. 이렇게 하면 사용자가 다시 시도할 수 있습니다.
  • 관리자만 사용할 수 있는 긴 마법사의 경우 UI를 표시하기 전에 진입점에서 관리자 자격 증명을 묻는 메시지를 표시할 수 있습니다.

텍스트

  • 명령에 권한 상승이 필요하기 때문에 줄임표를 사용하지 마세요. 상승의 필요성은 UAC 방패로 표시됩니다.

문서화

사용자 계정 컨트롤을 참조하는 경우:

  • 이 기능을 최소 권한의 사용자 계정 또는 LUA가 아닌 사용자 계정 컨트롤(첫 번째 언급 시) 또는 UAC(후속 언급)로 참조하세요.
  • 비관리자를 표준 사용자로 참조하세요.
  • 기본 제공 컴퓨터 관리자를 기본 제공 관리자로 참조하세요.

사용자 설명서:

  • 권한 부여로 관리 작업을 수행하기 위해 동의를 제공하는 행위를 참조하세요.

프로그래밍 및 기타 기술 설명서:

  • 관리자 권한으로 관리 작업을 수행하기 위한 동의를 제공하는 행위를 참조하세요.
  • UAC의 컨텍스트에서 관리자가 상승되지 않은 경우 관리자를 보호된 관리자로, 관리자 권한 상승 후에 관리자를 참조합니다.
  • 암호를 자격 증명 UI로 입력하는 데 사용되는 대화 상자를 참조하세요. 동의 UI로 동의를 제공하는 데 사용되는 대화 상자를 참조하세요. 일반적으로 둘 다 권한 상승 UI라고 합니다.