Перейти к содержимому

Виртуализация uac что это windows 10

  • автор:

UAC немного деталей

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

UAC (User Account Control) — это средство контроля пользовательских учетных записей, впервые появившийся в Windows Vista.
Главная задача UAC была — заставить всех работать как обычный стандартный системный пользователь, т.к. работа с правами администратора очень не безопасна. Все мы прекрасно знаем, что многие приложения с которыми мы работаем могут содержать «уязвимости» и их же часто используют злоумышленники. Соответственно работая это приложение с правами администратора (хотя за частую приложениям не требуются права такого уровня), может писать в системные папки абсолютно прозрачно для пользователя, чего нам собственно и не нужно. Для воизбежания подобных ситуаций собственно и был призван на помощь UAC.
Он не только защищает вас от злонамеренного кода, а так же в какой то мере оказывает совместимость со «старыми» приложениями. Он позволяет писать «старым» приложения в системные папки, а если быть точнее эти приложения просто так думают что пишут в системные папки, но на самом деле пишут в виртуализированные папки, в следствии чего приложения работают вполне корректно.

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

Собственно когда вы заходите в систему, создаются 2а маркера доступа: административный и обычный.
Административный лежит в загашнике, а вы работаете под обычным аккаунтом. Далее если вам потребуется повышение привилегий, возникает защищенный рабочий стол и внутри этой сессии вы делаете выбор «Да, я согласен» или «Отмена». Это сделано для предотвращения спуфинг атак. Если в систему заходит обычный пользователь, то для него административный маркер не создается, а только обычный. Затем если ему нужно повысить свои привилегии, снова появляется защищенный рабочий стол в котором запрашивается пароль административной учетной записи. После чего для приложения формируется административный маркер доступа. По завершению приложения, административный маркер доступа удаляется.

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

Хочу напомнить, что отключая user account control вы подвергаете всю систему опасности и превращаете вашу ОС в windows XP, а не просто отключаете надоедливые окошки.
При этом отключая UAC вы выключаете windows resource protection, который собирает все необходимые для «жизни» файлы в хранилище, что бы после критического сбоя восстановить поврежденные файлы.
Виртуализация осуществятся в режиме ядра.
* Файловая система: драйвером luafv.sys.
* Реестр: встроенными средствами.
Перенаправляемые каталоги системы:
\Program Files, \Windows, \Windows\System32.
Исключения: Системные *.exe и *.dll.
Перенаправляемые разделы реестра:
HKLM\Software
Исключения: Некоторые ключе подраздела Microsoft.
Приложение работающее с обычными правами, перенаправляет в:
* Запись:
\Users\\AppData\Local\Virtual Store
HKCU\Software\Classes\VirtualStore
Что совершенно прозрачно происходит для самого приложения, т.е. приложение продолжает думать что оно пишет к примеру в \Program Files.
* Чтение:
Сначала используется зона пользователя, затем глобальное расположение.

Повышение привилегий для определенного приложения:
* В свойствах ярлыка поставить галочку «Запускать от имени администратора».
* Эвристическим инсталлятором.
* Явным запросом пользователя.
* В манифесте.

Ну и в довершение неполный список действий, вызывающих сообщение User Account Control:

* Изменения в каталогах %SystemRoot% и %ProgramFiles% — в частности, инсталляция/деинсталляция ПО, драйверов и компонентов ActiveX; изменение меню «Пуск» для всех пользователей.
* Установка обновлений Windows, конфигурирование Windows Update.
* Перенастройка брандмауэра Windows.
* Перенастройка UAC.
* Добавление/удаление учётных записей.
* Перенастройка родительских запретов.
* Настройка планировщика задач.
* Восстановление системных файлов Windows из резервной копии.
* Любые действия в каталогах других пользователей.
* Изменение текущего времени (впрочем, изменение часового пояса UAC не вызывает).

Защита системных файлов с помощью виртуализации UAC

ОС Windows Vista идет с отличным инструментом, помогающим защитить ваши системные файлы, папки и реестр от взлома, этим инструментом является виртуализация контроля пользовательских учетных записей (User Account Control Virtualization). UAC виртуализация помогает запрещать приложениям запись в защищенные места системных ресурсов, направляя ‘Записи — Writes’ в места, к которым пользователь имеет доступ, и которые являются его личным профилем. Результатом такой виртуализации является то, что пользователь может выполнять эти приложения, но данные, написанные этими приложениями, не отправляются в системную директорию, что позволяет защитить общую стабильность всей операционной системы. Виртуализация также означает, что несколько пользователей теперь могут выполнять приложения на одном компьютере, поскольку все их личные данные записываются в их личный пользовательский профиль. В этой статье я покажу вам, как контролировать UAC виртуализацию с помощью групповой политики, системного реестра и диспетчера задач.

Параметры групповой политики, связанные с UAC

UAC имеет множество опций, помогающих управлять поведением UAC на всех компьютерах Vista. Конечно групповая политика является идеальным решением для управления UAC, равно как и почти всеми остальными настройками Vista, так как она предоставляет решение централизованного управления этими параметрами. В любом GPO можно найти параметры, которые контролируют UAC, в разделе Конфигурация компьютера. Поскольку UAC является параметром, связанным с безопасностью, вы найдете его в стандартной вкладке Опции безопасности, расположенной в директории Конфигурация компьютера\Параметры Windows\Настройки безопасности\Локальные политики\Опции безопасности, как показано на рисунке 1.

*

Увеличить Рисунок 1: UAC параметры расположены во вкладке опций безопасности в разделе конфигурации компьютера

Параметры UAC в GPO расположены в нижней части списка опций безопасности (Security Options), который появляется в правой панели. Чтобы посмотреть список, просто выберите вкладку опций безопасности в левой панели, как показано на рисунке 2.

*

Увеличить Рисунок 2: Параметры UAC расположены в нижней части списка опций безопасности

Здесь вы найдете все рычаги управления, которые нужны для настройки UAC на Vista и Windows Server 2008 компьютерах. Обратите внимание, что можно контролировать то, как ведет себя UAC, когда администратор входит в систему, а также когда в систему входит обычный пользователь. Самая последняя опция управляет тем, как ведет себя виртуализация, связанная с UAC. Этот параметр отмечен ‘User Account Control’; Virtualize file and registry write failures to per-user locations (Виртуализация ошибок записи файлов и реестра в директории пользователей). Включение этого параметра политики, по сути, виртуализирует эти параметры. Если этот параметр не настроен для компьютеров Vista, и вы хотите установить его, вам сначала нужно будет включить эту политику, как показано на рисунке 3.

*

Рисунок 3: Для виртуализации записи файлов и реестра включите политику

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

Виртуализация диспетчера задач

Теперь, когда мы убедились в том, что UAC виртуализирует обновления реестра и файлов, необходимо убедиться, что каждый процесс выполняет виртуализацию корректно. Чтобы видеть и контролировать UAC виртуализацию, можно запустить диспетчера задач (Task Manager). Самым простым способом запуска диспетчера задач является нажатие правой клавишей на панели Пуск и выбор опции Меню диспетчера задач. Когда диспетчер изначально запускается, вы находитесь во вкладке Приложения. Вам нужно перейти во вкладку Процессы, чтобы увидеть виртуализацию. Теперь, когда вы находитесь во вкладке Процессов в диспетчере задач, вы не увидите никаких первичных признаков виртуализации. Однако просмотр того, что виртуализируется, является довольно простым. Для просмотра того, что виртуализируется, выберите опцию Вид, затем нажмите на опции Выбор столбцов. В конце списка у вас будет опция для виртуализации, как показано на рисунке 4.

*

Рисунок 4: Добавление столбца виртуализации в вид Процессов диспетчера задач

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

*

Увеличить Рисунок 5: Столбец виртуализации добавлен во вкладку процессов в диспетчере задач

Если вы хотите видеть все процессы и их виртуализацию, вам нужно нажать на кнопку ‘Показывать процессы всех пользователей’, которая также включит все системные процессы. Вы заметите, что виртуализация процессов, принадлежащих учетным записям SYSTEM, Network service и Local Service, запрещена.

Работа с реестром (Reg hack) для добавления расширений

Как видно на рисунке 5, ни один из исполняемых файлов, запущенных напрямую, не виртуализируется. Это происходит потому, что .exe, .bat, .scr, .vbs и другие расширения исключены из стандартной виртуализации. Это может вызвать проблемы, если программе необходимо обновляться самостоятельно. Стандартный пользователь не сможет сделать это, поскольку приложение будет выполняться в защищенной области. Если у вас есть расширения приложений, которые вы хотите удалить из изначального списка невиртуализируемых расширений, это можно сделать путем изменения реестра. Чтобы добавить расширение в список исключений невиртуализируемых расширений, введите его в HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Luafv\Parameters\ExcludedExtensionsAdd Registry value. Чтобы добавить расширение(ия), вам нужно создать значение ExcludedExtensionsAdd Registry. Когда вы добавляете новое значение, используйте многострочный тип значения реестра (multi-string Registry value type). Расширения добавляются без предшествующей точки, поэтому расширение .exe будет записываться просто как exe. После изменения всего списка расширений перезагрузите компьютер, чтобы изменения вошли в силу.

Виртуализация в режиме реального времени (Real-time Virtualization)

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

*

Рисунок 6: Диалоговое окно подтверждения того, что вы хотите виртуализировать процесс

После виртуализации приложения процесс будет иметь значение Включено в списке процессов вкладки процессов.

Заключение

Возможность контролирования различных аспектов UAC виртуализации предоставляет администраторам управление над тем, какие приложения будут виртуализироваться. В любом GPO контроль над всеми аспектами UAC довольно прост в использовании и установке в Active Directory. После включения UAC и виртуализации файлов и реестра ваши компьютеры Windows Vista будут виртуализировать процессы, которые до этого не виртуализировали. Можно посмотреть в диспетчере задач, что виртуализируется, в результате вы получите четкую картину того, что виртуализируется, а что – нет.

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

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

Процесс UAC и принципы взаимодействия

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

Windows защищает процессы, указывая их уровни целостности. Уровни целостности — это измерения доверия:

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

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

Чтобы лучше понять, как работает этот процесс, давайте подробнее рассмотрим процесс входа в Windows.

Процесс входа

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

По умолчанию пользователи категории «Стандартный» и «Администратор» получают доступ к ресурсам и выполняют приложения в контексте безопасности стандартного пользователя.
Когда пользователь входит в систему, система создает маркер доступа для этого пользователя. Маркер доступа содержит сведения об уровне доступа, предоставленного пользователю, включая специальные идентификаторы безопасности (SID) и привилегии в Windows.

Когда администратор входит в систему, для пользователя создаются два отдельных маркера доступа: стандартный маркер доступа пользователя и маркер доступа администратора. Стандартный маркер доступа пользователя:

  • Содержит те же сведения, относящиеся к пользователю, что и маркер доступа администратора, но права администратора Windows и идентификаторы безопасности удаляются.
  • Он используется для запуска приложений, которые не выполняют административные задачи (стандартные пользовательские приложения).
  • Он используется для отображения рабочего стола путем выполнения процесса explorer.exe. Explorer.exe является родительским процессом, от которого все другие запускаемые пользователем процессы наследуют свой маркер доступа. В результате все приложения запускаются от имени обычного пользователя, если пользователь не предоставит согласие или учетные данные для утверждения приложения на использование полного маркера административного доступа.

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

Взаимодействие с пользователем UAC

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

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

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

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

Запрос на ввод учетных данных

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

Снимок экрана: запрос учетных данных контроля учетных данных.

Запрос на продолжение

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

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

Запросы на повышение прав UAC

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

  • Windows
  • Проверка издателя (подпись)
  • Издатель не проверен (без знака)

Запросы на повышение прав обозначаются цветом следующим образом:

  • Серый фон. Приложение является административным приложением Windows, например элементом панель управления или приложением, подписанным проверенным издателем . Снимок экрана: запрос учетных данных UAC с подписанным исполняемым файлом.
  • Желтый фон: приложение без знака или подписи, но не является доверенным Снимок экрана: запрос согласия UAC с неподписанным исполняемым файлом.

Значок щита

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

Снимок экрана: значок щита UAC в свойствах даты и времени.

Значок щита на кнопке Изменить дату и время. указывает, что для процесса требуется полный маркер доступа администратора.

Защита запроса на повышение прав

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

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

Начиная с Windows Server 2019, невозможно вставить содержимое буфера обмена на безопасный рабочий стол. Это то же поведение, что и для поддерживаемых в настоящее время версий клиентских ОС Windows.

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

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

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

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

Чтобы лучше понять каждый компонент, ознакомьтесь со следующими таблицами:

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

Система

  • Всегда уведомлять:
    • Уведомляет, когда программы пытаются установить программное обеспечение или внести изменения на компьютере.
    • Уведомляет, когда вы вносите изменения в параметры Windows.
    • Замораживает выполнение других задач, пока вы не ответите.
    • Уведомляет, когда программы пытаются установить программное обеспечение или внести изменения на компьютере.
    • Не уведомляет, когда вы вносите изменения в параметры Windows.
    • Замораживает выполнение других задач, пока вы не ответите.
    • Уведомляет, когда программы пытаются установить программное обеспечение или внести изменения на компьютере.
    • Не уведомляет, когда вы вносите изменения в параметры Windows.
    • Не замораживает выполнение других задач, пока вы не ответите.
    • Не уведомляет, когда программы пытаются установить программное обеспечение или внести изменения на компьютере.
    • Не уведомляет, когда вы вносите изменения в параметры Windows.
    • Не замораживает выполнение других задач, пока вы не ответите.

    Ядро

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

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

    Некоторые приложения универсальной платформы Windows могут не работать при отключении UAC.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    • Имя файла содержит такие ключевые слова, как «install», «setup» или «update».
    • Поля ресурса управления версиями содержат следующие ключевые слова: «Поставщик», «Название компании», «Название продукта», «Описание файла», «Исходное имя файла», «Внутреннее имя» и «Имя экспорта»
    • Ключевые слова в параллельном манифесте внедряются в исполняемый файл
    • Ключевые слова в определенных записях StringTable связаны в исполняемом файле.
    • Ключевые атрибуты в данных скрипта ресурса связаны в исполняемом файле
    • В исполняемом файле имеются целевые последовательности байтов.

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

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

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

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

    • Обзор управления учетными записями пользователей
    • Учетные записи пользователей в Windows Vista
    • Доступ к файлам как стандартный пользователь
    • Доступ к реестру как стандартный пользователь
    • Повышение привилегий
    • Последствия UAC с помощью CreateProcess()
    • Настройка уровня выполнения в манифесте приложения
    • Внедрение манифеста в Visual Studio
    • Совместимость UAC со старыми играми
    • Устаревшие сценарии и манифесты
    • Заключение
    • Дальнейшее чтение

    Обзор управления учетными записями пользователей

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

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

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

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

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

    Учетные записи пользователей в Windows Vista

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

    Стандартная учетная запись пользователя аналогична учетной записи ограниченного пользователя в Windows XP. Как и в Windows XP, стандартный пользователь не может записывать в папку Program Files, не может записывать данные в HKEY_LOCAL_MACHINE части реестра и не может выполнять задачи, которые изменяют систему, например установку драйвера в режиме ядра или доступ к пространствам процессов уровня системы.

    Учетная запись Администратор istrator значительно изменилась с момента выпуска Windows XP. Ранее все процессы, запущенные членом группы Администратор istrator, были предоставлены административные привилегии. С включенной функцией UAC все процессы выполняются со стандартными привилегиями пользователей, если только администратор не повышает их. Это различие делает учетные записи в группе Администратор istrators более безопасным путем снижения риска безопасности, вызванного потенциальными ошибками в большинстве программ.

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

    Если ваша игра уже работает в Windows XP с ограниченными учетными записями пользователей, переход к управлению учетными записями пользователей в Windows Vista должен быть очень простым. Большинство таких приложений будут работать как есть, хотя добавление манифеста приложения настоятельно рекомендуется. (Манифесты описаны далее в этом разделе Задание уровня выполнения в манифесте приложения.)

    Доступ к файлам как стандартный пользователь

    Аспект игры, наиболее пострадавший от стандартных ограничений пользователей, — организация файловой системы и специальные возможности. Вы никогда не должны предполагать, что ваша игра может записывать файлы в папку, в которой установлена ваша игра. Например, в Windows Vista права пользователя должны быть повышены операционной системой, прежде чем приложение сможет записать в папку Program Files. Чтобы избежать этого, следует классифицировать файлы данных игры по область и специальным возможностям, а также использовать функцию SHGetFolderPath вместе с константами CSIDL, предоставляемыми оболочкой Windows, для создания соответствующих путей к файлам. Константы CSIDL соответствуют известным папкам в файловой системе, которую операционная система использует и способствует секционированием глобальных и пользовательских файлов.

    Попытка создать или написать файл или каталог в папке, которая не предоставляет разрешение на запись в процесс, завершится ошибкой в Windows Vista, если у приложения нет прав администратора. Если исполняемый файл 32-разрядной игры выполняется в устаревшем режиме, так как он не объявил запрошенный уровень выполнения, операции записи будут выполнены успешно, но они будут подвергаться виртуализации, как описано в разделе «Совместимость UAC с старыми играми» далее в этой статье.

    Таблица 1. Известные папки

    Имя CSIDL Типичный путь (Windows Vista) Стандартные права пользователя Администратор istrator Rights Область доступа Description Примеры
    CSIDL_PERSONAL C:\Users\user name\Documents Чтение и запись Чтение и запись Для каждого пользователя Файлы игры, которые считываются и изменяются пользователем, и могут управляться вне контекста игры. Снимки экрана. Сохраненные игровые файлы с сопоставлением расширения файла.
    CSIDL_LOCAL_APPDATA C:\Users\user name\AppData\Local Чтение и запись Чтение и запись Для каждого пользователя Файлы игры, которые считываются и изменяются пользователем и используются только в контексте игры. Файлы кэша игр. Конфигурации проигрывателя.
    CSIDL_COMMON_APPDATA C:\ProgramData Чтение и запись, если владелец Чтение и запись Все пользователи Игровые файлы, которые могут быть созданы пользователем и считываются всеми пользователями. Доступ на запись предоставляется только создателю файла (владельца). Профили пользователей
    CSIDL_PROGRAM_FILES C:\Program Files
    or
    C:\Program Files (x86)
    Только чтение Чтение и запись Все пользователи Статические игровые файлы, написанные установщиком игры, которые считываются всеми пользователями. Игровые ресурсы, такие как материалы и сетки.

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

    Кроме того, следует воздержаться от жестко закодированных предположений о известных путях папок. Например, в Windows XP Professional 64-разрядной версии и Windows Vista x64 путь к файлам программы — C:\Program Files (x86) для 32-разрядных программ и C:\Program Files для 64-разрядных программ. Эти известные пути изменяются с Windows XP, и пользователи могут перенастроить расположение многих этих папок и даже найти их на разных дисках. Поэтому всегда используйте константы CSIDL, чтобы избежать путаницы и потенциальных проблем. Программа установки Windows понимает эти известные расположения папок и перемещает данные при обновлении операционной системы из Windows XP; В отличие от этого, использование нестандартных расположений или жестко закодированных путей может завершиться ошибкой после обновления ОС.

    Следует обратить внимание на тонкие различия в удобствах между папками, указанными в CSIDL_PERSONAL и CSIDL_LOCAL_APPDATA. Рекомендуемая практика выбора константы CSIDL, используемой для записи файла, заключается в том, чтобы использовать CSIDL_PERSONAL, если пользователь, как ожидается, будет взаимодействовать с файлом, например дважды щелкнуть его, чтобы открыть его в средстве или приложении, и использовать CSIDL_LOCAL_APPDATA для других файлов. Обе папки могут использоваться приложением для хранения и упорядочивания файлов данных, зависящих от пользователей, так как нет различий в доступе область или уровне привилегий. Чтобы создать имена путей, которые достаточно уникальны, чтобы не столкнуться с другими приложениями, но достаточно коротким, чтобы сохранить количество символов в полном пути меньше, чем значение MAX_PATH, 260.

    В следующем коде приведен пример записи файла в известную папку:

    #include #include #include . . . TCHAR strPath[MAX_PATH]; if( SUCCEEDED( SHGetFolderPath( NULL, CSIDL_PERSONAL, NULL, SHGFP_TYPE_CURRENT, strPath ) ) ) < PathAppend( strPath, TEXT( "Company Name\\Title" ) ); if( !PathFileExists( strPath ) ) < if( ERROR_SUCCESS != SHCreateDirectoryEx( NULL, strPath, NULL ) ) return E_FAIL; >PathAppend( strPath, TEXT( "gamefile.txt" ) ); // strPath is now something like: // C:\Users\\Documents\Company Name\Title\gamefile.txt // Open the file for writing HANDLE hFile = CreateFile(strPath, GENERIC_WRITE, NULL, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL); if( INVALID_HANDLE_VALUE != hFile ) < // TODO: Write to file CloseHandle(hFile); >> 

    Доступ к реестру как стандартный пользователь

    Доступ к реестру стандартным пользователем ограничен аналогично файловой системе. Пользователь уровня «Стандартный» разрешен доступ на чтение ко всем разделам в реестре; Однако доступ на запись предоставляется только в поддереве HKEY_CURRENT_USER (HKCU), который сопоставляется внутренне с подразделом HKEY_USERS\Security ID (SID) текущего пользователя. Приложению, которое должно записываться в любое расположение реестра, отличное от HKEY_CURRENT_USER, требуются права администратора.

    Если 32-разрядное приложение не содержит запрошенный уровень выполнения в манифесте, все записи в HKEY_LOCAL_MACHINE\Software будут виртуализированы, а запись в другие места за пределами HKEY_CURRENT_USER завершится ошибкой.

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

    Повышение привилегий

    В Windows Vista любой приложение, требующее прав администратора, должно объявлять запрос на уровень административного выполнения в манифесте (описано в следующем разделе, настройка уровня выполнения в манифесте приложения).

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

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

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

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

    prompt for a standard user to enter credentials for an administrative account

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

    Рисунок 2. Запрос Администратор istrator для авторизации изменений на компьютере

    prompt for an administrator to authorize changes to the computer

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

    Важно отметить, что процесс с повышенными привилегиями выполняется как администратор, который ввел учетные данные в запросе UAC, а не как стандартный пользователь, вошедший в систему. Это аналогично запускам в Windows XP, который получает папку администратора и разделы реестра при доступе к данным пользователя, а все программы, запускаемые с повышенными привилегиями, также наследуют как административные права, так и расположения учетных записей пользователей. Для администраторов, которые запрашивают подтверждение (продолжить или отмену), эти расположения будут соответствовать расположениям текущего пользователя. Однако процессы, требующие повышения прав, не должны работать с данными для каждого пользователя. Обратите внимание, что это может существенно повлиять на работу установщика! Если установщик, работающий от имени администратора, записывается в HKCU или в профиль пользователя, он может быть написан в неправильном расположении. Рассмотрите возможность создания этих значений для каждого пользователя при первом запуске игры.

    Последствия UAC с помощью CreateProcess()

    Механизм повышения прав UAC не будет вызываться из вызова функции Win32 CreateProcess() для запуска исполняемого файла, который настроен на более высокий уровень выполнения, чем текущий процесс. В результате вызов CreateProcess() завершится ошибкой с возвратом getLastError() ERROR_ELEVATION_REQUIRED. CreateProcess() будет успешно выполнен только в том случае, если уровень выполнения вызываемого объекта равен или меньше, чем вызывающий объект. Неопровернутый процесс, который должен вызывать повышенные привилегии, должен сделать это с помощью функции ShellExecute(), что приведет к тому, что механизм повышения прав UAC активируется с помощью оболочки.

    Настройка уровня выполнения в манифесте приложения

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

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

    Явно задав запрошенное ЗначениеExecutionLevel в asInvoker, в этом примере утверждается операционная система, что игра будет работать правильно без прав администратора. В результате UAC отключает виртуализацию и запускает игру с теми же привилегиями, что и вызывающий объект, который обычно является стандартными привилегиями пользователей, так как Windows Обозреватель работает как стандартный пользователь.

    Операционная система может быть проинформирована о том, что игра требует повышения прав администратора, заменив asInvoker на «require Администратор istrator», чтобы создать следующий тег:

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

    Распространенное заблуждение заключается в том, что добавление манифеста, который задает запрошенныйExecutionLevel значение «требовать Администратор istrator» обходит необходимость запроса на повышение прав. Это не так. Это просто запрещает операционной системе угадывать, требуется ли настройка или обновление приложения права администратора. Пользователю по-прежнему предлагается авторизовать повышение прав.

    Windows проверка подписи любого приложения, помеченного для повышения прав перед отображением запроса UAC. Большой исполняемый файл, помеченный для повышения прав, занимает больше времени, чтобы проверка, чем небольшой исполняемый файл и длиннее исполняемого файла, помеченного как asInvoker. Таким образом, исполняемые файлы установки, которые являются самовосстановляющимися, должны быть помечены как asInvoker, и любая часть, которую необходимо пометить как «требовать Администратор istrator», должна быть помещена в отдельный вспомогательный исполняемый файл.

    Атрибут uiAccess, показанный в предыдущих примерах, всегда должен иметь значение FALSE для игр. Этот атрибут указывает, имеют ли клиенты автоматизации пользовательского интерфейса доступ к защищенному системного пользовательского интерфейса и имеют особые последствия для безопасности, если задано значение TRUE.

    Внедрение манифеста в Visual Studio

    Поддержка манифеста была добавлена в Visual Studio начиная с VS2005. По умолчанию исполняемый файл, встроенный в Visual Studio 2005 (или более поздней версии), будет внедрен в него автоматически созданный манифест в процессе сборки. Содержимое автоматически созданного манифеста зависит от определенных конфигураций проекта, указанных в диалоговом окне свойств проекта.

    Манифест, автоматически созданный Visual Studio 2005, не будет содержать , так как невозможно настроить уровень выполнения UAC в свойствах проекта. Предпочтительный способ добавить эти сведения заключается в том, чтобы разрешить VS2005 объединить определяемый пользователем манифест, содержащий с автоматически созданным манифестом. Это так же просто, как добавление файла *.manifest в решение, содержащее XML-файл, указанный в предыдущем разделе. Когда Visual Studio сталкивается с файлом манифеста в решении, он автоматически вызывает средство манифеста (mt.exe), чтобы объединить файлы манифеста с автоматически созданным.

    В средстве манифеста (mt.exe), предоставленном Visual Studio 2005, возникает ошибка в объединенном и внедренном манифесте, который может вызвать проблемы при запуске исполняемого файла в Windows XP до sp3. Ошибка — это результат того, как средство переопределяет пространство имен по умолчанию при объявлении . К счастью, легко обойти проблему, явно объявив другое пространство имен в и задав области дочерних узлов в новое пространство имен. Xml, предоставленный в предыдущем разделе, демонстрирует это исправление.

    Предостережение при использовании средства mt.exe, включенного в Visual Studio 2005, заключается в том, что при обработке средство не содержит обновленную схему для проверки XML. Чтобы устранить это предупреждение, рекомендуется заменить все файлы mt.exe в каталоге установки Visual Studio 2005 (существует несколько экземпляров) с помощью mt.exe, предоставленного в последнем пакете SDK для Windows.

    Начиная с Visual Studio 2008, теперь можно указать уровень выполнения приложения в диалоговом окне свойств проекта (рис. 3) или с помощью флага компоновщика /MANIFESTUAC. Установка этих параметров приведет к автоматическому созданию и внедрению манифеста с соответствующим в исполняемый файл Visual Studio 2008.

    Рисунок 3. Настройка уровня выполнения в Visual Studio 2008

    setting the execution level in visual studio 2008

    Внедрение манифеста в более ранних версиях Visual Studio без поддержки манифеста по-прежнему возможно, но требует больше работы от разработчика. Пример этого можно найти в проекте Visual Studio 2003, включенном в любой пример в пакете SDK DirectX до выпуска за март 2008 г.

    Совместимость UAC со старыми играми

    Если ваша игра, как представляется, сохраняет и загружает файл в каталог Program Files, но нет доказательств файла iOn Windows Vista, любое 32-разрядное приложение, которое не содержит запрошенный уровень выполнения в своем манифесте, считается устаревшим приложением. До Windows Vista большинство приложений обычно выполняются пользователями с правами администратора. В результате эти приложения могут свободно читать и записывать системные файлы и разделы реестра, и многие разработчики не внесите изменения, необходимые для правильной работы с ограниченными учетными записями пользователей в Windows XP. Однако в Windows Vista эти же приложения теперь завершаются ошибкой из-за нехватки привилегий доступа в рамках новой модели безопасности, которая обеспечивает стандартное выполнение пользователей для устаревших приложений. Чтобы снизить влияние этого, виртуализация также была добавлена в Windows Vista. Виртуализация будет поддерживать тысячи устаревших приложений, работающих в Windows Vista, не требуя, чтобы эти приложения имели повышенные привилегии в любое время просто для успешного выполнения нескольких дополнительных операций. обнаружены шансы, что ваша игра работает в устаревшем режиме и подвергалась виртуализации.

    Виртуализация влияет на файловую систему и реестр путем перенаправления системных операций записи (и последующих операций файлов или реестра) в расположение для каждого пользователя в профиле текущего пользователя. Например, если приложение пытается записать в следующий файл:

    C:\\Program Files\\Company Name\\Title\\config.ini

    Запись автоматически перенаправляется в:

    C:\\Users\\user name\\AppData\\Local\\VirtualStore\\Program Files\\Company Name\\Title\\config.ini

    Аналогичным образом, если приложение пытается написать значение реестра следующим образом:

    Вместо этого он будет перенаправлен на:

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

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

    Рисунок 4. Процесс виртуализации

    virtualization process

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

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

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

    Устаревшие сценарии и манифесты

    В большинстве сценариев использования просто помечайте exe правильными элементами манифеста UAC и убедитесь, что приложение работает правильно, как стандартный пользователь достаточно для отличной совместимости UAC. Большинство игроков работают под управлением Windows Vista или Windows 7 с включенным контролем учетных записей пользователей. Для Windows XP и пользователей в Windows Vista или Windows7 с отключенной функцией управления учетными записями пользователей они обычно выполняются с помощью учетных записей администратора. Хотя это менее безопасный режим работы, он, как правило, не будет выполняться никаких дополнительных проблем совместимости, хотя, как отмечалось выше, отключение UAC также отключает виртуализацию.

    Существует особый случай, когда программа помечена как «требовать Администратор istrator» в манифесте UAC. В Windows XP и Windows Vista или Windows 7 с отключенным элементом управления учетными записями пользователя элементы манифеста UAC игнорируются системой. В этом случае пользователи с учетными записями администратора всегда будут запускать все программы с полными правами администратора, поэтому эти программы будут работать должным образом. Пользователи с ограниченным доступом Windows XP и стандартные пользователи, работающие в Windows Vista или Windows 7, всегда будут запускать эти программы с ограниченными правами, а все операции уровня администратора завершаются ошибкой. Поэтому рекомендуется, чтобы программы, помеченные как «requiret Администратор istrator», вызывали IsUserAn Администратор при запуске и отображали неустранимое сообщение об ошибке, если возвращает значение FALSE. Для приведенного выше сценария большинства это всегда будет успешно, но обеспечивает более удобный интерфейс пользователя и четкое сообщение об ошибке для этой редкой ситуации.

    Заключение

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

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

    Дополнительные материалы

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

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

    Дополнительные сведения об управлении учетными записями пользователей см . в Windows Vista: управление учетными записями пользователей в Microsoft TechNet.

    Другим полезным ресурсом является статья «Обучение приложений, чтобы играть приятно с помощью управления учетными записями пользователей Windows Vista», из журнала MSDN, январь 2007 года. В этой статье рассматриваются общие вопросы совместимости приложений, а также преимущества и проблемы использования пакетов установщика Windows в Windows Vista.

    Дополнительные сведения об ошибке и исправлении для mt.exe, инструмент, используемый Visual Studio 2005 для автоматического слияния и внедрения манифеста в исполняемый файл, см. в статье «Изучение манифестов» части 2. Пространства имен по умолчанию и манифесты UAC в Windows Vista в блоге Криса Джексона в MSDN.

    Обратная связь

    Были ли сведения на этой странице полезными?

Добавить комментарий

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