Поделиться через


Архитектура UAC

На приведенной ниже схеме показана архитектура UAC.

Схема, описывающая архитектуру контроля учетных записей.

Пользователь

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

System

  • Служба сведений о приложении:

    • Системная служба, которая помогает запускать приложения, для запуска которых требуется один или несколько повышенных привилегий или прав пользователя.
    • Служба сведений о приложениях помогает запускать такие приложения, создавая новый процесс для приложения с маркером полного доступа администратора, когда требуется повышение прав.
    • В зависимости от настроенных политик пользователь может дать согласие.
  • Повышение уровня установки ActiveX:

    • Если ActiveX не установлен, система проверяет уровень ползунка контроля учетных записей.
    • Если технология ActiveX установлена, будет выбран параметр групповой политики Контроль учетных записей: переход на безопасный рабочий стол при выполнении запроса на повышение прав.
  • Проверьте уровень ползунка контроля учетных записей: В UAC есть ползунок для выбора из четырех уровней уведомлений:

    • Всегда уведомлять:
      • Уведомляет, когда программы пытаются установить программное обеспечение или внести изменения на компьютере.
      • Уведомляет, когда вы вносите изменения в параметры Windows.
      • Замораживает выполнение других задач, пока вы не ответите.
      • Рекомендуется, если вы часто устанавливаете новое программное обеспечение или посещаете незнакомые веб-сайты.
    • Уведомлять только при попытках приложений внести изменения в компьютер:
      • Уведомляет, когда программы пытаются установить программное обеспечение или внести изменения на компьютере.
      • Не уведомляет, когда вы вносите изменения в параметры Windows.
      • Замораживает выполнение других задач, пока вы не ответите.
      • Рекомендуется, если вы не часто устанавливаете приложения или посещаете незнакомые веб-сайты.
    • Уведомлять только при попытках приложений внести изменения в компьютер (не затемнять рабочий стол):
      • Уведомляет, когда программы пытаются установить программное обеспечение или внести изменения на компьютере.
      • Не уведомляет, когда вы вносите изменения в параметры Windows.
      • Не замораживает выполнение других задач, пока вы не ответите.
      • Не рекомендуется. Выбирайте этот параметр только в том случае, если на то, чтобы затемнить рабочий стол на компьютере, требуется много времени.
    • Никогда не уведомлять (отключить запросы UAC):
      • Не уведомляет, когда программы пытаются установить программное обеспечение или внести изменения на компьютере.
      • Не уведомляет, когда вы вносите изменения в параметры Windows.
      • Не замораживает выполнение других задач, пока вы не ответите.
      • Не рекомендуется по соображениям безопасности.
  • Защищенный рабочий стол включен. Контроль учетных записей пользователей: при запросе параметра политики повышения прав пользователей переключение на защищенный рабочий стол .

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

    • CreateProcess вызывает AppCompat, Fusion и функцию обнаружения установщика, чтобы определить, не требуется ли приложению повышение прав.
    • Затем файл проверяется для определения запрошенного уровня выполнения, данные о котором хранятся в манифесте приложения для данного файла.
    • CreateProcess завершается ошибкой, если запрошенный уровень выполнения, указанный в манифесте, не соответствует маркеру доступа, и возвращает ошибку (ERROR_ELEVATION_REQUIRED) в ShellExecute.
  • AppCompat:

    • В базе данных совместимости приложений хранятся сведения в виде записей об исправлении совместимости для каждого приложения.
  • Fusion:

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

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

Ядро

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

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

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

Важно.

Чтобы полностью отключить контроль учетных записей, необходимо отключить политику Контроль учетных записей пользователей: запуск всех администраторов в режиме утверждения Администратор. Некоторые приложения универсальная платформа Windows могут не работать, если контроль учетных записей отключен.

Виртуализация

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

Windows включает технологию виртуализации файлов и реестра для приложений, которые не соответствуют UAC и для которых требуется маркер доступа администратора для правильной работы. Когда административное приложение, которое не соответствует UAC, пытается выполнить запись в защищенную папку, например Program Files, контроль учетных записей предоставляет приложению собственное виртуализированное представление ресурса, который оно пытается изменить. Эта виртуализованная копия сохраняется в профиле пользователя. Эта стратегия создает отдельную копию виртуализированного файла для каждого пользователя, который запускает несоответствующее приложение.

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

Виртуализация не является вариантом в следующих сценариях:

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

Уровни выполнения запросов

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

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

Технология обнаружения установщика

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

Технология обнаружения установщика применяется только к:

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

Перед созданием 32-разрядного процесса проверяются следующие атрибуты, чтобы определить, является ли он установщиком:

  • Имя файла включает ключевые слова, такие как "install", "setup" или "update".
  • Поля ресурсов управления версиями содержат такие ключевые слова, как Vendor, Company Name, Product Name, File Description, Original Filename, Internal Name и Export Name.
  • Ключевые слова в параллельном манифесте встроены в исполняемый файл.
  • Ключевые слова в специальных записях StringTable связаны в исполняемом файле.
  • Ключевые атрибуты в данных сценария ресурса связаны в исполняемом файле.
  • Исполняемый файл содержит целевые последовательности байтов.

Примечание.

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

Примечание.

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