контроль учетных записей

Примечание

Это руководство по проектированию было создано для Windows 7 и не было обновлено для более новых версий Windows. Большая часть рекомендаций по-прежнему применяется в принципе, но презентация и примеры не отражают наше текущее руководство по проектированию.

Хорошо спроектированный интерфейс контроля учетных записей помогает предотвратить нежелательные изменения в системе таким образом, который является предсказуемым и требует минимальных усилий.

С полной включенной функцией контроля учетных записей (UAC) интерактивные администраторы обычно выполняются с минимальными привилегиями пользователей, но они могут самостоятельно повысить уровень для выполнения административных задач, предоставив явное согласие с пользовательским интерфейсом согласия. К таким административным задачам относятся установка программного обеспечения и драйверов, изменение параметров на уровне системы, просмотр и изменение других учетных записей пользователей и запуск средств администрирования.

В их наименее привилегированном состоянии администраторы называются защищенными администраторами. В их состоянии с повышенными привилегиями они называются администраторами с повышенными привилегиями. В отличие от этого, пользователи уровня "Стандартный" сами по себе не могут повысить уровень, но могут попросить администратора повысить их с помощью пользовательского интерфейса учетных данных. Встроенная учетная запись администратора не требует повышения прав.

screen shot of 'allow program' security message

Пользовательский интерфейс предоставления согласия, используемый для повышения уровня защищенных администраторов, имеющих права администратора.

screen shot of message asking for password

Пользовательский интерфейс учетных данных, используемый для повышения уровня обычных пользователей.

UAC предоставляет следующие преимущества:

  • Это сокращает количество программ, работающих с повышенными привилегиями, поэтому помогает предотвратить случайное изменение параметров системы пользователями и предотвратить получение доступа на уровне системы "вредоносными программами". При отказе в повышении прав вредоносные программы могут влиять только на данные текущего пользователя. Без повышения прав вредоносные программы не могут вносить системные изменения или влиять на других пользователей.
  • В управляемых средах хорошо спроектированные возможности UAC позволяют пользователям повысить производительность при работе в качестве стандартных пользователей, удаляя ненужные ограничения.
  • Это дает стандартным пользователям возможность попросить администраторов предоставить им разрешение на выполнение административных задач в течение текущего сеанса.
  • Для домашних сред он обеспечивает более качественный родительский контроль над изменениями на уровне системы, включая установленное программное обеспечение.

Разработчики: Сведения о реализации см. в разделе "Изменение пользовательского интерфейса для обеспечения совместимости UAC".

В Windows Vista защищенные администраторы могут получать уведомления обо всех изменениях системы или нет. Параметр UAC по умолчанию — уведомлять обо всех изменениях независимо от их происхождения. Когда вы получите уведомление, рабочий стол будет неактивен, и вы должны утвердить или отклонить запрос в диалоговом окне UAC, прежде чем вы сможете сделать что-либо еще на компьютере. Затемнение рабочего стола называется защищенным рабочим столом , так как другие программы не могут работать, пока он неактивен.

Windows 7 содержит два промежуточных параметра UAC для защищенных администраторов, а также два из Windows Vista. Первое — уведомлять пользователей только о том, что программа вносит изменения, поэтому администраторы автоматически получают повышенные привилегии при самостоятельном внесении изменений. Это параметр UAC по умолчанию в Windows 7, который также использует защищенный рабочий стол.

Второй промежуточный параметр в Windows 7 совпадает с первым, за исключением того, что он не использует защищенный рабочий стол.

screen shot of four uac settings in windows 7

Windows 7 представлено два промежуточных параметра UAC.

Примечание: Рекомендации по написанию кода для поддержки контроля учетных записей представлены в отдельной статье.

Принципы проектирования

Цели

Хорошо спроектированный интерфейс контроля учетных записей имеет следующие цели:

  • Исключите ненужное повышение прав. Пользователям необходимо повысить уровень только для выполнения задач, которым требуются права администратора. Все остальные задачи должны быть разработаны для устранения необходимости повышения прав. Часто устаревшее программное обеспечение требует ненужных прав администратора путем записи в разделы реестра HKLM или HKCR, Program Files или Windows Системные папки.
  • Будьте предсказуемы. Пользователи уровня "Стандартный" должны знать, какие задачи требуют от администратора выполнять или не могут выполняться вообще в управляемых средах. Администраторам необходимо знать, какие задачи требуют повышения прав. Если они не могут предсказать необходимость повышения прав точно, они с большей вероятностью дают согласие на административные задачи, когда они не должны.
  • Требуется минимальное усилие. Задачи, которым требуются права администратора, должны быть разработаны для обеспечения единого повышения прав. Задачи, требующие нескольких повышений прав, быстро станут трудоемкими.
  • Вернуться к минимальным привилегиям. После завершения задачи, требующей прав администратора, программа должна вернуться к состоянию наименьших привилегий.

Поток задач повышения прав

Если задаче требуется повышение прав, она выполняет следующие действия:

  1. Точка входа. Задачи, требующие немедленного повышения прав, когда UAC полностью включен, имеют точки входа, помеченные щитом UAC. В этом случае пользователи должны ожидать видеть пользовательский интерфейс повышения прав сразу после щелчка таких команд, и они должны быть более осторожными, когда они видят пользовательский интерфейс повышения прав из задач, у которых нет щита.

    screen shot of uac shield icons and their labels

    В этом примере элементы панели управления родительского контроля и учетных записей пользователей требуют повышения прав.

    Если UAC частично включен или выключен полностью, экран UAC по-прежнему отображается, чтобы указать, что задача включает изменения на уровне системы и, следовательно, требует повышения прав, даже если пользователь может не видеть пользовательский интерфейс повышения прав. Всегда отображать экран UAC для задач, требующих повышения прав, обеспечивает простоту и предсказуемость пользовательского интерфейса.

  2. Отметки. Для защищенных администраторов задача запрашивает согласие с помощью пользовательского интерфейса согласия. Для стандартных пользователей задача запрашивает учетные данные администратора с помощью пользовательского интерфейса учетных данных.

    screen shot of two types of elevation

    В этих примерах показаны пользовательский интерфейс учетных данных и пользовательский интерфейс согласия.

  3. Отдельный процесс с повышенными привилегиями. Для выполнения задачи создается новый процесс с повышенными привилегиями.

  4. Вернуться к наименьшим привилегиям. При необходимости вернитесь к наименьшим привилегиям, чтобы выполнить все действия, которые не требуют повышения прав.

Обратите внимание, что задачи не помнят состояния с повышенными привилегиями. Например, если пользователь перемещается назад и вперед через точку входа с повышением прав в мастере, пользователь должен каждый раз повысить уровень.

Варианты использования

Контроль учетных записей пользователей имеет несколько шаблонов использования (в порядке предпочтения):

  1. Работа для стандартных пользователей. Спроектируйте функцию для всех пользователей, ограничив ее область текущим пользователем. Ограничивая параметры текущего пользователя (в отличие от системного), вы полностью устраняете необходимость в пользовательском интерфейсе повышения прав и позволяет пользователям выполнять задачу.

    Неправильно:

    screen shot of message: you do not have privilege

    В этом примере пользователям Windows XP приходилось иметь права администратора для просмотра или изменения текущего часового пояса.

    Правильно:

    screen shot of date and time dialog box

    В этом примере функция часового пояса была переработана в Windows 7 и Windows Vista для работы для всех пользователей.

  2. Имеют отдельные элементы пользовательского интерфейса для стандартных пользователей и администраторов. Четко отделяйте стандартные задачи пользователей от административных задач. Предоставьте всем пользователям доступ к полезным сведениям только для чтения. Четко определите административные задачи с помощью щита UAC.

    graphic of uac shield showing elevation required

    В этом примере элемент панели управления системы отображает свое состояние для всех пользователей, но изменение параметров на уровне системы требует повышения прав.

  3. Разрешить стандартным пользователям пытаться выполнить задачу и повысить уровень при сбое. Если пользователи уровня "Стандартный" могут просматривать сведения и могут вносить некоторые изменения без повышения прав, разрешить им доступ к пользовательскому интерфейсу и повысить их уровень только в том случае, если задача завершается сбоем. Этот подход подходит, если пользователи уровня "Стандартный" имеют ограниченный доступ, например со свойствами собственных файлов в Windows Explorer. Он также подходит для параметров на панель управления страницах гибридного концентратора.

    screen shot of access is denied message

    В этом примере пользователь попытался изменить свойства файла программы, но не имеет достаточных привилегий. Пользователь может повысить уровень и повторить попытку.

  4. Работа только для администраторов. Используйте этот подход только для функций и программ администратора! Если функция предназначена только для администраторов (и не имеет путей навигации или полезных сведений только для чтения для стандартных пользователей), вы можете запрашивать учетные данные администратора в точке входа, прежде чем отображать любой пользовательский интерфейс. Используйте этот подход для длительных мастеров и потоков страниц , когда всем путям требуются права администратора.

    Если вся программа предназначена только для администраторов, пометьте ее, чтобы запрашивать учетные данные администратора для запуска. Windows отображаются такие значки программы с наложением щита UAC.

    screen shot of windows logo and uac shield overlay

    В этом примере программе требуются права администратора для запуска.

Рекомендации

Значок щита UAC

  • Элементы управления отображением с щитом UAC, чтобы указать, что задача требует немедленного повышения прав, если UAC полностью включен, даже если UAC в настоящее время не полностью включен. Если для всех путей мастера и потока страниц требуется повышение прав, отобразите экран UAC в точке входа задачи. Правильное использование щита UAC помогает пользователям прогнозировать, когда требуется повышение прав.

  • Если программа поддерживает несколько версий Windows, отображается экран UAC, если требуется по крайней мере одна версия, требуемая повышения прав. Так как Windows XP никогда не требует повышения прав, рассмотрите возможность удаления экранов UAC для Windows XP, если это можно сделать последовательно и без ущерба для производительности.

  • Не отображайте экран 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 проще программировать и предоставляет пользователям информацию о характере задачи.

Elevation

  • По возможности проектируйте задачи, выполняемые стандартными пользователями без повышения прав. Предоставьте всем пользователям доступ к полезным сведениям только для чтения.

  • Повышение прав для каждой задачи, а не для каждого параметра. Не смешивайте стандартные параметры пользователя с административными параметрами на одной странице или в диалоговом окне. Например, если стандартные пользователи могут изменить некоторые, но не все параметры, разделите эти параметры как отдельную область пользовательского интерфейса.

    Неправильно:

    screen shot of date and time settings dialog box

    В этом примере стандартные параметры пользователей неправильно смешиваются с административными параметрами.

    Правильно:

    screen shot of same dialog box without uac shields

    В этом примере параметры изменения даты и времени находятся в отдельном диалоговом окне, доступном только администраторам. Параметры часового пояса доступны пользователям уровня "Стандартный" и не смешиваются с административными параметрами.

  • Не учитывайте необходимость повышения при определении необходимости отображения или отключения элемента управления. Это вызвано следующими соображениями.

    • В неуправляемых средах предположим, что пользователи уровня "Стандартный" могут повысить уровень, запрашивая администратора. Отключение элементов управления, требующих повышения прав, не позволит пользователям иметь права администратора.
    • В управляемых средах предполагается, что стандартные пользователи вообще не могут повысить уровень. Удаление элементов управления, требующих повышения прав, не позволит пользователям знать, когда перестать искать.
  • Чтобы исключить ненужные высоты, выполните приведенные далее действия.

    • Если задаче может потребоваться повышение прав, по мере возможности повысить ее уровень. Если задаче требуется подтверждение, отобразите пользовательский интерфейс повышения прав только после подтверждения пользователя. Если задача всегда требует повышения прав, повышение прав в точке входа.
    • После повышения сохраняйте повышенные привилегии до тех пор, пока повышенные привилегии больше не нужны. Чтобы выполнить одну задачу, пользователям не нужно многократно повышать уровень.
    • Если пользователи должны повысить уровень, чтобы внести изменения, но не вносить изменения, оставьте кнопки положительной фиксации включенными, но обработайте фиксацию как отмену. Это устраняет необходимость повышения прав пользователей, чтобы закрыть окно.
    • Неправильно:
    • screen shot of window with only one button active
    • В этом примере кнопка "Сохранить изменения" отключена, чтобы избежать ненужного повышения прав, но становится включенной при изменении выбора пользователем. Однако отключенная кнопка фиксации делает ее похожей на то, что пользователи действительно не имеют выбора.
  • Не отображайте сообщение об ошибке при сбое задач, так как пользователи решили не повышать уровень. Предположим, что пользователи намеренно решили не продолжать работу, поэтому они не будут рассматривать эту ситуацию как ошибку.

    Неправильно:

    screen shot of message: fabrikam restore can't run

    В этом примере восстановление Fabrikam неправильно выдает сообщение об ошибке, когда пользователь решает не повышать уровень.

  • Не отображайте предупреждения, чтобы объяснить, что пользователям может потребоваться повысить привилегии для выполнения задач. Позвольте пользователям самостоятельно обнаружить этот факт.

  • Отображение щита UAC и пользовательского интерфейса повышения прав на основе следующей таблицы:

    Объект Обстоятельство Где поместить экран UAC Когда следует повысить уровень
    Программа
    Вся программа предназначена только для администраторов.
    screen shot of windows logo and uac shield overlay
    Наложение щита UAC на значок программы.
    Отображение пользовательского интерфейса повышения прав при запуске.
    Get-Help
    Вся команда предназначена только для администраторов.
    screen shot of change account link and uac shield
    Экран UAC на кнопке или ссылке.
    Отображение пользовательского интерфейса повышения прав при нажатии кнопки или ссылки, но после подтверждения.
    Get-Help
    Команда отображает полезные сведения только для чтения, соответствующие всем пользователям, но для изменений требуются права администратора.
    screen shot of change settings link and uac shield
    Экран UAC на кнопке или ссылке для внесения изменений.
    Отображение пользовательского интерфейса повышения прав при нажатии кнопки команды, но после любых подтверждений.
    Get-Help
    Стандартные пользователи могут просматривать сведения и, возможно, вносить некоторые изменения без повышения прав. разрешить стандартным пользователям пытаться и повышать уровень при сбое.
    screen shot of error with uac icon on retry button
    Не показывать экран UAC для команды, но показывать его для точки входа в высоту, если команда завершается ошибкой.
    Отображение пользовательского интерфейса повышения прав при повторной попытке выполнения команды.
    Шаг задачи
    Для всех последующих шагов требуется повышение прав.
    screen shot of next command button with uac shield
    Экран UAC на кнопке "Далее" (или эквивалент).
    Отображение пользовательского интерфейса повышения прав при нажатии кнопки "Далее" или "Другая фиксация".
    Шаг задачи
    Для некоторых ветвей требуется повышение прав.
    screen shot of command link with uac shield
    Экран UAC для командных ссылок, требующих повышения прав.
    Отображение пользовательского интерфейса повышения прав при щелчке ссылок на команды с помощью щита UAC.

Пользовательский интерфейс повышения прав

  • Если пользователь предоставляет учетную запись, которая не является допустимой (имя или пароль) или не имеет прав администратора, просто переиграйте пользовательский интерфейс учетных данных. Не отображайте сообщение об ошибке.
  • Если пользователь отменяет пользовательский интерфейс учетных данных, верните его обратно в исходный пользовательский интерфейс. Не отображайте сообщение об ошибке.
  • Если функция контроля учетных записей отключена и пользователь уровня "Стандартный" пытается выполнить задачу, требующую повышения прав, введите сообщение об ошибке с сообщением "Эта задача требует прав администратора. Для выполнения этой задачи необходимо войти с помощью учетной записи администратора".

screen shot of task requires privileges message

В этом примере функция контроля учетных записей отключена, поэтому в сообщении об ошибке объясняется, что пользователь должен использовать учетную запись администратора.

Мастера

  • Не повышайте привилегии несколько раз. После повышения уровня мастера он должен оставаться повышенным.
  • Если задача выполняется в мастере, поместите экран UAC на кнопку "Далее" страницы фиксации (которая должна иметь более конкретную метку). Когда пользователь фиксирует:
    • Если следующая страница является страницей "Ход выполнения", перейдите на нее и модально отобразите пользовательский интерфейс повышения прав. После успешного повышения прав выполните задачу.
    • Если следующая страница является страницей завершения, перейдите к этой странице (но временно замените ее содержимое на "Ожидание разрешения...") и измените пользовательский интерфейс повышения прав. После успешного повышения прав выполните задачу и отобразите содержимое страницы завершения.
    • Если пользователь отменяет пользовательский интерфейс повышения прав, вернитесь на страницу фиксации. Это позволяет пользователю повторить попытку.
  • Если задача выполняется после завершения работы мастера, поместите экран UAC на кнопку "Готово" страницы фиксации (которая должна иметь более конкретную метку). Когда пользователь фиксирует:
    • Оставаться на странице фиксации и модически отображать пользовательский интерфейс повышения прав. После успешного повышения прав закройте мастер.
    • Если пользователь отменяет пользовательский интерфейс повышения прав, вернитесь на страницу фиксации. Это позволяет пользователю повторить попытку.
  • Для длительных мастеров, предназначенных только для администраторов, можно запрашивать учетные данные администратора в точке входа, прежде чем отображать любой пользовательский интерфейс.

text

  • Не используйте многоточие, так как для команды требуется повышение прав. Необходимость повышения указывается на щите UAC.

Документация

При обращении к управлению учетными записями:

  • См. функцию как контроль учетных записей пользователей (при первом упоминании) или UAC (при последующем упоминании), а не учетную запись пользователя с наименьшими привилегиями или LUA.
  • Обратитесь к неадминистраторам в качестве стандартных пользователей.
  • Обратитесь к встроенным администраторам компьютеров в качестве встроенных администраторов.

В документации пользователя:

  • Обратитесь к акту предоставления согласия на выполнение административной задачи в качестве разрешения.

В программировании и другой технической документации:

  • Обратитесь к акту предоставления согласия на выполнение административной задачи в качестве повышения прав.
  • В контексте UAC обратитесь к администраторам в качестве защищенных администраторов, если они не были повышенными, а администраторы с повышенными привилегиями после повышения прав.
  • См. диалоговое окно, используемое для ввода паролей в качестве пользовательского интерфейса учетных данных. См. диалоговое окно, используемое для предоставления согласия в качестве пользовательского интерфейса согласия. Как правило, это пользовательский интерфейс повышения прав.