Статья для разработчиков под Windows Vista: требования к разработке приложений с точки зрения механизма управления учетными записями пользователей (UAC)
Автор:
  • Корпорация Майкрософт

Опубликовано: Сентябрь 2006 года

В цикле «Статьи для разработчиков под Windows Vista» (EN) публикуются материалы для программистов, других технических специалистов и менеджеров, заинтересованных в глубоком изучении новых и улучшенных функций Windows Vista. Новые статьи публикуются на сайте Центр разработки для Windows Vista примерно раз в две недели. Эти статьи являются кратким изложением справочных материалов Windows, которые можно загрузить отсюда.

Примечание: это предварительный документ, который может быть изменен в будущих выпусках.

Примечание: отзывы о статьях отправляйте по адресу Vistadev@microsoft.com

Содержание

Данная статья поможет разработчикам приложений обеспечить совместимость своих приложений с механизмом управления учетными записями пользователей (User Account Control - UAC). Она состоит из следующих разделов:

Примечание. Полностью описание этих вопросов можно найти в файле справки Windows, который можно загрузить отсюда. В файле выберите раздел Fundamentals, затем Secure Applications, Developing Secure Applications, а затем User Account Control (UAC).

Для чего нужно управление учетными записями пользователей?

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

Есть и другие причины, почему на компьютерах с операционными системами-предшественницами Microsoft Windows Vista трудно работать с привилегиями стандартного пользователя:

  1. Многие Windows-приложения требуют, чтобы зарегистрировавшийся пользователь был администратором, но на самом деле им не нужен доступ на уровне администратора. Эти приложения перед своим запуском выполняют различные проверки административного доступа, включая следующее:
    1. проверка маркера доступа администратора;
    2. запросы на доступ к защищенным папкам системы с уровнем «Полный доступ»;
    3. запись данных в защищенные папки %ProgramFiles%, %WinDir%, и в реестр HKLM\Software.
  2. При проектировании многих Windows-приложений не учитывалась концепция минимальных привилегий, и функциональность для пользователя и для администратора не разделены на два разных процесса.
  3. В Windows 2000 и XP каждая новая учетная запись для нового пользователя по умолчанию создается с административными полномочиями. Поэтому такие ключевые компоненты Windows – панель управления датой и временем или управление питанием – не работают должным образом для стандартного пользователя.
  4. В Windows 2000 и Windows XP администраторы должны создавать две отдельные пользовательские учетные записи — одну для выполнения административных задач, а другую для повседневных. Поэтому пользователи вынуждены для выполнения любой административной задачи выходить из системы, если они работали как обычный пользователь, и регистрироваться заново как администратор, либо использовать возможность запуска команд с правами другого пользователя.

Механизм управления учетными записями пользователей (User Account Control, UAC) упрощает развертывание стандартных пользовательских настольных систем с обычными полномочиями, как в масштабах предприятия, так и дома.

Переделывая архитектуру системы безопасности Windows, которая изначально проектировалась для операционной системы Microsoft Windows NT 3.1, команда разработчиков UAC хотела реализовать более гибкую и безопасную стандартную модель пользователей. В предыдущих версиях Windows во время процесса регистрации для администратора создавался один маркер доступа. В него входит большинство привилегий Windows и административных идентификаторов безопасности (SID - security identifier). Этот маркер доступа обеспечивает администратору возможность установки приложений, настройки операционной системы и доступа ко всем ресурсам.

Команда разработчиков UAC подошла к процессу создания маркеров доступа в Windows Vista совершенно по-другому. Когда на компьютере с Windows Vista регистрируется пользователь с административными полномочиями, создаются два маркера доступа: фильтрованный маркер доступа обычного пользователя и полный маркер доступа администратора. При запуске рабочего стола (Explorer.exe) вместо маркера доступа администратора используется маркер доступа стандартного пользователя. Все процессы-потомки наследуют полномочия от этого запущенного сервиса рабочего стола (процесс explorer.exe), что помогает уменьшить зону уязвимости Windows Vista. По умолчанию все пользователи, включая администраторов, регистрируются на компьютере с Windows Vista как обычные пользователи.

Примечание. У предшествующего утверждения есть одно исключение: Гости (Guest) регистрируются в системе с меньшими правами и привилегиями, чем обычные пользователи.

Когда администратор пытается выполнить административную задачу, например, установить приложение, система UAC предлагает ему санкционировать это действие. Только после этого задача запускается с полным маркером доступа администратора. Такое предупреждение администратору устанавливается по умолчанию, и это можно настроить с помощью инструментов Security Policy Manager (secpol.msc) и Group Policy (gpedit.msc).

Примечание. Работа администратора в Windows Vista с включенным механизмом UAC также называется учетной записью администратора в режиме одобрения (administrator account in Admin Approval Mode). Этот режим является для администраторов режимом по умолчанию.

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

У обычных пользователей тоже есть возможность повысить свои полномочия с помощью инфраструктуры UAC и выполнять административные задачи. Когда такой пользователь пытается выполнить административную задачу, система UAC просит его ввести действительные учетные данные администратора. Такое предупреждение для стандартного пользователя устанавливается по умолчанию, и это тоже можно настроить с помощью оснасток Security Policy Manager (secpol.msc) и Group Policy (gpedit.msc).

Обновления Windows Vista

Вот перечень обновлений, который отражает общие системные изменения функциональности, внесенные в Windows Vista:

  • система UAC по умолчанию включена;
  • все последующие учетные записи пользователей создаются как обычные пользователи (Standard Users);
  • предупреждения о повышении уровня прав по умолчанию отображаются системой безопасности;
  • предупреждения о повышении уровня прав для фоновых приложений минимизируются на панели задач;
  • при регистрации пользователя повышение полномочий блокируется;
  • при новой установке системы встроенная учетная запись администратора по умолчанию выключена;
  • управление учетными записями пользователей и удаленные сценарии;
  • новые настройки по умолчанию для списков управления доступом (ACL - Access Control List).

Подробную информацию о перечисленных выше нововведениях в Windows Vista можно найти в файле справки.

Как работает UAC

В этом разделе дается описание архитектурных и функциональных компонентов UAC для разработчиков приложений. Раздел состоит из двух глав: «Новые технологии в Windows Vista» и «Архитектура UAC».

Новые технологии в Windows Vista

Далее рассматриваются следующие технологии:

  • обнаружение установщика;
  • исправление стандартных пользователей с помощью Windows Installer 4.0;
  • изоляция привилегий пользовательского интерфейса;
  • виртуализация.

Подробную информацию о новых технологиях для Windows Vista и изменениях маркеров доступа можно найти в разделе New Technology файла справки.

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

На рисунке 1 представлена последовательность запуска исполняемых файлов в Windows Vista:

 Рис. 1. Архитектура UAC

Рассмотрим эти операции и действия UAC подробнее.

Последовательность запуска для обычного пользователя

Операции при запуске приложений с правами обычного пользователя в Windows Vista схож с тем, что происходит в Windows XP, но в них внесены некоторые изменения:

  1. ShellExecute() вызывает CreateProcess().
  2. CreateProcess() вызывает AppCompat, Fusion и Installer Detection, чтобы оценить, нуждается ли приложение в повышении полномочий. Затем исполняемый файл проверяется и определяется его requestedExecutionLevel, который хранится в манифесте приложения. В данных AppCompat сохраняется информация о решении проблем с совместимостью приложений. Система обнаружения установщика Installer Detection определяет исполняемые файлы для установки (setup и т.п.).
  3. CreateProcess() возвращает код ошибки Win32 со значением ERROR_ELEVATION_REQUIRED («требуется расширение полномочий»).
  4. ShellExecute() ожидает именно эту новую ошибку, и в случае ее появления обращается к службе Application Information service (AIS) с целью попытки запуска с повышенными полномочиями.

Операции при запуске с повышенными полномочиями

последовательность запуска с повышенными полномочиями в Windows Vista является новой для семейства Windows.

  1. AIS получает вызов от ShellExecute() и еще раз оценивает запрошенный уровень выполнения и требования групповых политик. Устанавливается, разрешено ли повышение прав и определяется их конфигурация.
  2. Если для запрошенного уровня выполнения требуется повышение полномочий, то служба выводит на экран пользователя (определяется из групповой политики) предупреждение. Для этого используется дескриптор HWND, полученный от ShellExecute().
  3. После того, как пользователь дал согласие на это действие или ввёл учётные данные, AIS затребует, если необходимо, соответствующий маркер доступа, связанный с соответствующим пользователем. Например, приложение, затребовавшее requestedExecutionLevel со значением highestAvailable, получит различные маркеры доступа в случае пользователя, который является лишь членом группы Backup Operators, и в случае члена локальной группы Administrators.

AIS повторно выполняет вызов CreateProcessAsUser(), предоставляя маркер доступа администратора и указывая рабочий экран пользователя.

Повлияет ли UAC на приложение?

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

Примечание. Если приложение корректно работает с привилегиями обычного пользователя в Windows XP, то оно будет правильно работать с привилегиями ОБЫЧНОГО пользователя и в Windows Vista.

Дополнительную информацию по этой теме можно получить в следующих подразделах файла справки:

  • почему нужно удалить административные зависимости в своем приложении?
  • снижение совокупной стоимости владения для приложения;
  • как определить, есть ли в приложении административные зависимости?
  • У меня есть приложение, специально работающее с правами администратора. Какие требования предъявляются к такому приложению?

Проектирование приложений для Windows Vista

Далее перечислены последовательность действий по проектированию приложений для Windows Vista:

  1. Первый шаг: протестируйте свое приложение на совместимость с Vista.
  2. Второй шаг: классифицируйте свое приложение: будет ли это приложение для обычного пользователя, для администратора или для смешанной роли.
  3. Третий шаг: Измените функционал приложения, чтобы он был совместим с UAC.
  4. Четвертый шаг: Измените пользовательский интерфейс приложения, чтобы он был совместим с UAC.
  5. Пятый шаг: переделайте установочный пакет приложения.
  6. Шестой шаг: создайте манифест и добавьте к приложению.
  7. Седьмой шаг: протестируйте приложение.
  8. Восьмой шаг: подпишите свое приложение с помощью сертификата Authenticode.
  9. Девятый шаг: примите участие в программе Windows Vista Logo.

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

Развертывание и распространение исправлений приложений для пользователей с обычными правами

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

Решение часто возникающих проблем

В следующих разделах перечислены проблемы, часто встречающиеся при работе приложений с Windows Vista. А именно:

  • проблемы с установкой объектов ActiveX;
  • документы ActiveX Documents не устанавливаются;
  • требуется приложение, среда Framework или дополнительный модуль;
  • для установки или обновления требуются административные полномочия;
  • местоположение пользовательских настроек приложения;
  • значения приложения UAC/DR по умолчанию для сохранения в защищенный каталог.

Подробности см. в разделе «Troubleshooting Common Issues» в файле справки.

Ссылки

Ссылки см. в разделе «References» в файле справки.

Примечание. Полностью описание этих вопросов можно найти в файле справки Windows, который можно загрузить отсюда. В файле выберите раздел Fundamentals, затем Secure Applications, Developing Secure Applications, а затем User Account Control (UAC).

Page view tracker