Контроль учётных записей пользователей (Tkumjkl, rc~mud] [ghnvyw hkl,[kfgmylyw)

Перейти к навигации Перейти к поиску

Контроль учётных записей пользователей (англ. User Account Control, UAC) — компонент операционных систем Microsoft Windows, впервые появившийся в Windows Vista. Этот компонент запрашивает подтверждение действий, требующих прав администратора, в целях защиты от несанкционированного использования компьютера. Администратор компьютера может отключить Контроль учётных записей пользователей в Панели управления.

Предпосылки создания[править | править код]

Ограничение прав, с которыми выполняются приложения (например, различение между «суперпользователем» и «обычными пользователями»), в течение десятилетий было обычным явлением в операционных системах для серверов и мейнфреймов. Домашние же операционные системы Майкрософт (такие, как MS-DOS, Windows 3.x и Windows 9x) не имели разделения прав: программа могла выполнить на компьютере любое действие. По этой причине компьютеры общего пользования быстро подвергались заражению вредоносными программами.

Несмотря на появление разделения прав в Windows NT, пользователи по привычке и для удобства использовали для работы учётную запись с правами администратора, нарушая принцип «запускать любую программу с минимально возможными правами». К тому же многие программы, написанные для Windows 9x или протестированные только с правами суперпользователя, не работали с урезанными правами — например, хранили конфигурационные файлы в каталоге с программой или в общей для всех пользователей ветке реестра.

Получается порочный круг: разработчики делают программное обеспечение, которому требуются широкие права пользователей, потому что пользователи «сидят под администраторами»; пользователи ведут же повседневную работу с правами администраторов, потому что этого требует программное обеспечение. Поэтому, несмотря на то, что ОС линейки Windows 9x уже много лет не производятся, на большинстве компьютеров с Windows 2000 и более поздними система разграничения доступа простаивает, а вредоносные программы получают администраторские права. Пропаганда Microsoft, призывавшая делать программы совместимыми с разграничением доступа, действовала, но медленно — многие программы (особенно небольшие утилиты, написанные одиночками) продолжали исполнять операции с повышенными привилегиями. Для того, чтобы склонить разработчиков писать более «безопасные» программы, и был разработан Контроль учётных записей пользователей.

Принцип работы[править | править код]

В случае, если программа запрашивает действие, требующее прав администратора, выполнение программы приостанавливается и система выдает запрос пользователю. Окно с запросом размещается на защищённом рабочем столе[прояснить], чтобы предотвратить программное «нажатие» кнопки разрешения.

Так, выдаются запросы при попытке изменения системного времени, установки программы, редактирования реестра, изменения меню «Пуск».

Также действует «виртуализация каталогов и реестра»: программа, которая пробует записать что-либо в каталог %PROGRAMFILES%\Папка\Пример.ini, записывает этот файл в каталог %USERPROFILE%\AppData\Local\VirtualStore\Program Files\Папка\Пример.ini. Это обеспечивает совместимость старых программ с разграничением доступа.

Список действий, вызывающих срабатывание[править | править код]

Вот (неполный) список действий, вызывающих срабатывание Контроля учётных записей пользователей[1]:

Есть три способа написать программу, совместимую с Контролем учётных записей пользователей.

  1. Указать в манифест-ресурсе уровень доступа программы: asInvoker, highestAvailable или requireAdministrator. Все три отключают виртуализацию каталогов, но asInvoker будет иметь пользовательские права, а остальные два — уже при запуске запросят повышение прав.
  2. Сделать функции, требующие повышенных прав, отдельным .EXE-файлом с правами highestAvailable или requireAdministrator или запускать его при помощи ShellExecute с lpOperation, равным runas.
  3. Сделать функции, требующие повышенных прав, доступными через COM-объект. При этом COM-сервером должен быть .EXE-файл с правами highestAvailable или requireAdministrator.

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

Недостатки[править | править код]

  • Многие программы, разработанные до появления Windows Vista, либо полностью несовместимы, либо требуют принятия специальных мер при установке и настройке. На самом деле данный недостаток относится скорее к устаревшим версиям программного обеспечения либо к устаревшим программам.
  • Окно с запросом не предоставляет пользователю достаточной информации для идентификации программы и действия, на которое потребовались дополнительные права.
  • Необходимость перезапуска программы для выполнения некоторых её функций. Например, Microsoft Visual Studio требует перезапуска с правами администратора при попытке открытия дамп-файла и некоторых других операциях.
  • В Windows 7 жестко записаны многие приложения, идущие в комплекте, как доверенные, а потому код, который приводит к срабатыванию для других приложений, для них не работает при настройке по умолчанию, что делает их потенциальными посредниками для выполнения опасных действий сторонними программами в обход Контроля учётных записей пользователей[2].
  • С включенным UAC многие программы, требующие повышение прав, могут не запуститься с правами пользователя, хотя они успешно работают с правами пользователя при выключенном UAC в учётной записи «Обычный доступ» (в Windows 7) или "Стандартная" (в Windows 10). Даже если попытаться запустить их от имени учётной записи «Обычный доступ» или "Стандартная", UAC все равно появится (если включен), и если в окне "Разрешить следующей программе внести изменения на этом компьютере?" нажать кнопку «Да» - программа может быть запущена с повышенными правами (права можно смотреть, к примеру, в программе Anvir Task Manager). При нажатии на кнопку "Да" не все программы будут запускаться с повышенными правами, некоторые могут запускаться с ограниченными правами. Если нажать кнопку "Нет" - программа либо будет запущена с ограниченными правами, либо завершит работу.

Минус UAC в данном случае в том, что пользователь не может знать, с какими правами будет запущена программа, если нажать кнопку "Да" - с ограниченными, или с повышенными (полными).

Настройка[править | править код]

В Windows Vista контроль учётных записей можно отключить в апплете Панели управления «Учетные записи пользователей», однако уровень обеспечения конфиденциальности и целостности программ и данных существенно снизится.

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

  • «Всегда уведомлять».
  • «Уведомлять только при попытках программ внести изменения в компьютер».
  • «Уведомлять только при попытках программ внести изменения в компьютер (не затемнять рабочий стол)».
  • «Никогда не уведомлять» (UAC будет отключен только после перезагрузки Windows).

Примечания[править | править код]

  1. What triggers User Account Control prompts?. Дата обращения: 5 сентября 2008. Архивировано из оригинала 15 октября 2007 года.
  2. Windows 7 UAC whitelist: Code-injection Issue (and more) Архивная копия от 25 апреля 2012 на Wayback Machine  (англ.)

Ссылки[править | править код]