Программирование >>  Управление учетными записями 

[ 1 ] 2 3 4 ... 6


Управление учетными записями

Рис. В.1. Вклда Compatibility

окна свойств приложия

Управление пользовательскими учетными записями (User Account Control - UAC) - это одно из средств, которые вы первым делом увидите в Windows Vista и Windows Server 2008, будучи разработчиком. Хотя в руководствах по Windows всегда упоминается об этой проблеме, многие приложения по-прежнему должны запускаться от имени учетной записи администратора. Например, нормальный пользователь не имеет права писать данные в каталог программных файлов - это требует административных привилегий. Поскольку многие приложения вообще не работают, не имея таких привилегий (хотя их функциональность этого и не требует), многие пользователи входят в систему от имени учетной записи Administrator. Поступая так, вы подвергаете свою систему риску установки нежелательных программ - троянских коней .

Windows Vista избегает этой проблемы, потому что Administrator по умолчанию не имеет административных привилегий. С этим процессом ассоциированы два маркера защиты - один с нормальными

пользовательскими привилегиями, а другой - с административными привилегиями (в этом случае вход выполняется от имени Administrator). С приложениями, требующими административных привилегий, пользователь может повысить уровень приложения для работы с правами Administrator. Это делается либо через контекстное меню Run as Administrator (Запуск от имени администратора), либо путем конфигурирования приложения на постоянное требование административных привилегий на вкладке Compatibility (Совместимость) окна свойств приложения, как показано на рис. В.1. Эта установка добавляет в реестр флаг совместимости HKCU\Software\Microsoft\ Windows NT\CurrentVersion\AppCompatFlags\Layers со значением RUNASADMIN.

Приложения, требующие административных привилегий

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

Visual Studio 2008 имеет новый шаблон для добавления манифеста к приложению. Такой манифест может быть либо добавлен к существующему приложению, либо посредством встраивания ресурсного файла Win32 в сборку. После добавления файла манифеста к проекту Visual Studio, он добавляется в ресурсы проекта, как вы можете увидеть в свойствах проекта, выбрав закладку Application (Приложение) в категории Resources (Ресурсы). Наличие вхождения здесь встраивает манифест в ресурс Win32 сборки.

Манифест приложения - это XML-файл, подобный конфигурационному файлу приложения. Но в отличие от конфигурационного файла приложения, имеющего расширение .config, файл манифеста оканчивается на .manifest. Имя файла должно совпадать с именем приложения, включая расширение файла .exe, за которым следует .manifest. Имя файла манифеста должно быть установлено по имени приложения, включая расширение файла exe, за которым следует .manifest. Visual Studio



1716 Часть VII. Приложения

переименовывает и копирует файл app.manifest так же, как делает это с конфигурационным файлом приложения. Файл манифеста содержит XML-данные, как показано ниже. Корневым элементом является <assembly>, содержащий в себе дочерний элемент <trusInfo>. Административные требования определены атрибутом level элемента <requestedExecutionLevel>.

<?xml version= 1.0 encoding= UTF-8 ?>

<asmv1:assembly manifestVersion= 1.0 xmlns= urn:schemas-microsoft-com:asm.v1 xmlns:asmv1= urn:schemas-microsoft-com:asm.v1 xmlns:asmv2= urn:schemas-microsoft-com:asmv2 xmlns:xsi= http: www.w3.org/20 01/XMLSchema-instance > <assemblyIdentity version= 1.0.0.0 name= MyApplication.app /> <trustInfo xmlns= urn:schemas-microsoft-com:asm.v2 > <security>

<requestedPrivileges xmlns= urn:schemas-microsoft-com:asm.v3 > <requestedExecutionLevel level= requireAdministrator

uiAccess= false /> </requestedPrivileges> </security>

</trustInfo>

</asmv1:assembly>

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

При установке requestedExecutionLevel вы можете специфицировать значения requireAdministrator, highestAvailable и asInvoker. Значение highestAvailable означает, что приложение получает те привилегии, которыми обладает пользователь. requireAdministrator означает требование административных привилегий. Если пользователь не зарегистрирован в системе как Administrator, появляется диалоговое окно входа, через которое пользователь может для этого приложения войти в систему как Administrator. asInvoker означает, что приложение работает с маркером доступа текущего пользователя.

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

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

Службы Windows рассматриваются в главе 23, а WCF - в главе 42.

Защитная пиктограмма

Если приложение или некоторая задача, выполняемая приложением, требует административных привилегий, пользователь информируется об этом легко узнаваемой защитной пиктограммой (с изображением щита). Такая пиктограмма прикрепляется к элементам управления, требующим повышения уровня привилегий. Пользователь ожидает увидеть соответствующее приглашение, щелкая на элементе с такой пиктограммой. На рис. В.2 и В.3 можно видеть эту пиктограмму. Диспетчер задач (Task Manager) требует повышения уровня привилегий для просмотра процессов пользова-



Приложение В. Windows Vista и Windows Server 2008 1717

телей. В окне User Accounts (Учетные записи пользователей) панели управления изменение типа учетной записи и предоставление другим пользователям доступа к компьютеру требуется повышение уровня привилегий.


Рис. В.2. Окно диспетчера задач


Рис. В.3. Окно User Accounts панели управления

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

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

□ Для продолжения работы Windows требуются ваши права. Это предупреждение показывается для приложений, поставляемых с Windows.

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

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



[ 1 ] 2 3 4 ... 6

© 2006 - 2024 pmbk.ru. Генерация страницы: 0.003
При копировании материалов приветствуются ссылки.
Яндекс.Метрика