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

Примечание

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

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

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

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

Снимок экрана: сообщение безопасности

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

Снимок экрана: сообщение с запросом пароля

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

Контроль учетных записей предоставляет следующие преимущества:

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

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

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

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

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

Снимок экрана: четыре параметра UAC в Windows 7

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

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

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

Цели

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

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

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

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

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

    Снимок экрана: значки щита UAC и их метки

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

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

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

    Снимок экрана: два типа высоты

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

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

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

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

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

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

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

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

    Снимок экрана: сообщение: у вас нет прав доступа

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

    Правильно:

    Снимок экрана: диалоговое окно даты и времени

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

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

    Изображение щита UAC, показывающее требуемое повышение высоты

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

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

    Снимок экрана: сообщение об отказе в доступе

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

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

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

    Снимок экрана: логотип Windows и наложение щита UAC

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

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

Значок щита UAC

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

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

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

    Снимок экрана: файлы фотографий в проводнике Windows

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

  • Экран UAC может отображаться на следующих элементах управления:

    Кнопки команд:

    Снимок экрана: кнопка с значком щита UAC

    Кнопка команды, требующая немедленного повышения прав.

    Ссылки на команды:

    Снимок экрана: ссылка на команду со значком щита UAC

    Командная ссылка, требующая немедленного повышения прав.

    Ссылки:

    Снимок экрана: изменение ссылки на учетную запись со щитом UAC

    Ссылка, требующая немедленного повышения прав.

    Меню:

    Снимок экрана: меню со щитом UAC

    Раскрывающееся меню, требующее немедленного повышения прав.

  • Так как задачи не помнят повышенные состояния, не изменяйте экран контроля контроля учетных записей в соответствии с состоянием.

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

Elevation

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

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

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

    Снимок экрана: диалоговое окно параметров даты и времени

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

    Правильно:

    Снимок экрана: одно и то же диалоговое окно без экранов UAC

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

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

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

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

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

    Снимок экрана с сообщением: не удается выполнить восстановление fabrikam

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

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

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

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

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

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

Снимок экрана: сообщение о том, что задача требует привилегий

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

Мастера

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

Текст

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

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

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

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

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

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

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

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