Windows Vista: Настольная книга по совместимости приложений

На этой странице…

 Введение
 Как проверить совместимость за тридцать минут
 Определение версии операционной системы
 Управление учетными записями пользователей
 Управление учетными записями пользователей - Рекомендации по обновлению приложений
 Защита ресурсов Windows (WRP)
 Защищенный режим Internet Explorer
 Windows Vista 64-bit
 Microsoft Graphical Identification and Authentication (GINA)
 Изоляция сеанса 0
 Сеть: TCP/IP и платформа фильтрации Windows
 Сеть: API модуля поддержки IP в режиме ядра
 Сеть: IPv6
 Риски, связанные с совместимостью
 Центр справки и поддержки
 Клиент Assistance Platform
 Программы по умолчанию
 Помощник по обеспечению совместимости программ (PCA) в Windows Vista - Документация для пользователя
 GDI
 Различия поведения при рисовании (WM_PAINT)
 Производительность рендеринга
 UIPI (графический интерфейс управления учетными записями пользователей)
 Масштабирование в высоком разрешении
 Значки PNG
 Укрепление именованных программных каналов
 Исключение или замена SPAP (Pstore)
 Поставщики WMI: Стандартная модель безопасности
 Служба теневого копирования томов
 Анализатор стандартных пользователей
 Поддержка механизма справки
 Дополнительная информация

Введение

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

Хотя операционная система Windows Vista, в основном, совместима с большинством приложений для Microsoft Windows XP и Microsoft Windows Server 2003 с различными пакетами обновлений, существуют и некоторые несовместимые моменты, неизбежно вытекающие из новых возможностей, более серьезной системы безопасности и высокой надежности. В целом уровень совместимости Windows Vista очень высок, и корпорация Майкрософт постоянно работает над реализацией самых лучших решений для обеспечения совместимости существующих приложений с Windows Vista.

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

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

  • Вкладка Совместимость.

    Пользователи могут нажать правой кнопкой мыши на ярлык программы или исполняемый файл, и включить режим совместимости с Windows XP SP2 ,чтобы приложение работало так же, как и в Windows XP. Кроме того, пользова��ель может выбрать вариант запуска Запустить программу с правами администратора, если приложению требуются права администратора, а у пользователя эти права имеются. Дополнительную информацию можно найти в разделе "Управление учетными записями пользователей" в настоящем документе.

Как проверить совместимость за тридцать минут

В этом разделе рассказывается о том, как протестировать и оценить совместимость приложения в Windows Vista. Существует два сценария проверки совместимости с Windows Vista.

Работа с ОС Windows Vista, установленной самостоятельно

  1. Установите Windows Vista на компьютере, предназначенном для тестирования.
  2. Установите приложение в Windows Vista. Если откроется окно с требованием разрешения на установку приложения, нажмите Разрешить, чтобы продолжить установку. Если установка пройдет успешно, переходите к шагу 6.
  3. Если приложение не удалось установить, и при этом окно с запросом разрешения не выводилось, нажмите правой кнопкой мыши на исполняемый файл программы установки, и выберите команду Запустить программу с правами администратора и попробуйте установить приложение снова. Если установка пройдет успешно, переходите к шагу 6.

    Примечание
    Этот шаг не требуется, если для установки используется MSI.

  4. Если будут выведены какие-либо сообщения об ошибках, например, о неправильной версии ОС, неверной регистрации CLSID или ошибках копирования файлов, нажмите правой кнопкой мыши на исполняемый файл программы установки EXE, откройте вкладку Совместимость и выберите режим совместимости с Windows XP SP2.
  5. Вернитесь к шагу 2. Если вы не можете установить приложение, переходите к шагу 9.
  6. Теперь приложение должно быть установлено.
  7. Запустите приложение. Если приложение не запускается или если выводятся сообщения об ошибках, включите режим совместимости с Windows XP SP2 для исполняемого файла приложения и повторите попытку.
  8. Если приложение запускается успешно, проведите полный набор тестов, которые обычно используются для тестирования приложений в Windows XP. Проверьте функции приложения и убедитесь, что оно работает нормально. В случае успешного выполнения всех тестов функциональности приложения переходите к шагу 10.
  9. Если приложение не устанавливается, не запускается, закрывается из-за ошибки, выводит сообщение об ошибке или не проходит тесты функциональности, оно может входить в небольшую категорию приложений, на которые влияют изменения операционной системы Windows Vista. В этом случае для проверки приложения следует ознакомиться с другими рекомендациями настоящего документа.
  10. Сценарий выполнен.

Работа с ОС Windows Vista, установленной поверх ОС Windows XP с пакетом обновления 2

  1. Установите Windows XP SP2 на тестовом компьютере и установите приложение. Прежде чем продолжить, убедитесь, что приложение работает нормально.
  2. Установите на тестовом компьютере ОС Windows Vista. Следуйте инструкциям Windows Vista по установке и обновлению. После завершения установки новой ОС войдите в нее, как в Windows XP.
  3. Запустите приложение. Если приложение не запускается или если выводятся сообщения об ошибках, включите режим совместимости с Windows XP SP2 для исполняемого файла приложения и повторите попытку.
  4. Если приложение запускается успешно, проведите полный набор тестов, которые обычно используются для тестирования приложений в Windows XP. Проверьте функции приложения и убедитесь, что оно работает нормально. В случае успешного выполнения всех тестов функциональности приложения, переходите к шагу 6.
  5. Если приложение не устанавливается, не запускается, закрывается из-за ошибки, выводит сообщение об ошибке или не проходит тесты функциональности, оно может входить в небольшую категорию приложений, на которые влияют изменения операционной системы Windows Vista. В этом случае для проверки приложения следует ознакомиться с другими рекомендациями настоящего документа.
  6. Сценарий выполнен.

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

Ссылки

Определение версии операционной системы

Важность функции:

Высокая

Краткое описание

ОС Windows Vista имеет внутренний номер версии 6. При вызове функции GetVersion она выводит этот номер версии.

Примечание
Этот номер - следующий основной номер версии после Windows XP (версия 5.x).

Проявления

Проявления результатов изменения номера версии зависят от приложения, например:

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

Решение проблемы

Большинство приложений нормально работают в Windows Vista, потому что в Windows Vista реализован высокий уровень совместимости с приложениями. Для приложений и программ установки, проверяющих версию ОС, в Windows Vista имеется режим совместимости.

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

Средства решения

  • Обычно приложения не выполняют проверку версии ОС или, по меньшей мере, принимают версии 6 и выше. Такая поддержка необходима, если только проверка версий не требуется по определенным правовым причинам, коммерческим причинам или по требованию определенного системного компонента.
  • Для обеспечения совместимости с 64-разрядной системой не следует использовать программы установки, работающие в 16-разрядном режиме.
  • Убедитесь, что все драйверы приложения являются драйверами пользовательского режима, чтобы обеспечить совместимость с 32-разрядными и 64-разрядными платформами.

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

Важность функции

Высокая

Краткое описание

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

Проявления

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

Средства решения

Быстрое решение для собственных программ установки:

  • Пользователь может запустить программу установки или обновления, нажав на нее правой кнопкой мыши и выбрав пункт Запустить программу с правами администратора.
  • Используйте средство обеспечения совместимости приложения, чтобы указать необходимость специальных прав для определенных программ установки. Для этого нужно нажать правой кнопкой мыши на ярлык программы или исполняемый файл, и включить режим совместимости с Windows XP SP2 на вкладке Совместимость.

Быстрое решение для приложений, которым требуются права администратора для изменения системы или записи данных в защищенные области:

  • Корпоративные пользователи смогут использовать средство обеспечения совместимости приложения для обеспечения правильного запуска старых приложений, требующих разрешений или привилегий администратора.
  • Уменьшение ограничений списков контроля доступа (ACL) для некоторых защищенных файлов может помочь обеспечить совместимость приложений, выполняющих запись в эти файлы.
  • Проверьте виртуальные папки и ключи реестра, чтобы определить, использует ли приложение объекты, требующие прав администратора. Эту информацию можно использовать для того, чтобы в будущих версиях приложения уже не применять доступ к областям, для которых требуются права администратора. Дополнительную информацию о виртуальных файлах, папках и областях можно найти в разделе "Ссылки".
  • Реализуйте "вызов библиотеки DLL, как приложения" в отдельном исполняемом файле и включите в этот исполняемый файл запрос требуемых привилегий.

Проверка совместимости:

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

Используйте решение на базе возможностей Windows Vista:

  • Приложения для Windows Vista должны:
    • Следовать рекомендациям программы Windows Vista LOGO и рекомендациям по принципам работы пользователя (UX) (см. раздел "Ссылки").
    • Использовать встраиваемые манифесты, указывающие требуемый уровень исполнения (requestedExecutionLevel, прежнее название RunLevel).
    • Отделять все административные функции от других функций в отдельный исполняемый файл. Все функции, для которых требуется высокий уровень прав, должны быть помещены в отдельный исполняемый файл с прямо указанным уровнем исполнения или в объект COM с правами администратора. Административные задачи должны запускаться только по прямому требованию. Это верно для всех приложений.
  • Для приложений, которые не имеют административный характер, следует изменить код, чтобы устранить необходимость использования разрешений и прав администратора.
  • Приложения, которые используются только администраторами, следует пометить так, чтобы они выполнялись с правами и разрешениями администратора.
  • При обновлении приложений следует использовать отдельный исполняемый файл для обновления приложения.
  • Приложения панели управления следует переместить из файлов .cpl в файлы с расширением .exe и включить в эти файлы манифест требуемого уровня прав.
  • Файлы DLL, запускаемые RunDLL32.EXE и нуждающиеся в правах и привилегиях администратора, следует преобразовать в исполняемый файл, в который следует включить манифест требуемого уровня прав.
  • Всегда открывайте файлы и ключи реестра с правами доступа только для чтения. Используйте доступ для чтения и записи только, когда он требуется, и меняйте его на уровень только для чтения после завершения операции.

Ссылки

Управление учетными записями пользователей - Рекомендации по обновлению приложений

Важность функции

Средняя

Краткое описание

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

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

Эвристическое решение обнаружения в Windows Vista Installer правильно определяет блоки обновления большинства приложений и присваивает процессам обновления соответствующие права, что обеспечивает успешное обновление. Однако в некоторых ситуациях не удается успешно выполнять обновление приложения. Например:

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

Проявления

Функция обновления приложения не работает.

Средства решения

Блоки обновления не обнаруживаются эвристическим решением обнаружения в Windows Vista Installer?

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

Многофункциональные исполняемые файлы

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

  1. Использование технологии отладки в MSI (поддерживается последними версиями Windows Installer, InsallShield, Wise, и т.д.).
    • MSI является основной технологией установки, поскольку обеспечивает возможность управления обновлениями.
    • Используйте MSI для создания первоначальной программы установки и добавьте сертификат в таблицу MsiPatchCertificate.
    • Создайте обновление для приложения и подпишите его ранее указанным сертификатом.
    • MSI повысит уровень прав приложения при установке пакета исправлений.

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

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

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

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

Ссылки

Защита ресурсов Windows (WRP)

Важность функции

Высокая (блокировка установки или запуска приложений)

Краткое описание

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

Проявления

Приложения и администраторы не могут заменять или модифицировать защищенные ресурсы ОС, что приводит к следующим результатам:

  1. Установочные программы, пытающиеся заменить, изменить или удалить файлы ОС или ключи реестра, защищенные системой WRP, могут закрываться с сообщением об ошибке, гласящим, что ресурс обновить невозможно. Это связано с тем, что доступ к этим ресурсам закрыт.
  2. Приложения, пытающиеся записать новые ключи реестра или записать новые значения в защищенные ключи реестра могут закрыться с сообщением об ошибке, гласящим, что доступ к этим ресурсам закрыт.
  3. Приложения, пытающиеся выполнить запись в защищенные ресурсы, могут закрыться с сообщением об ошибке, если они используют ключи реестра или значения.

Примеры защищенных системных областей:

  • Большинство исполняемых файлов Windows защищены системой WRP. По умолчанию системой WRP защищены файлы со следующими расширениями:
    • .acm, .ade, .adp, .app, .asa, .asp, .aspx, .ax
    • .bas, .bat, .bin
    • .cer, .chm, .clb, .cmd, .cnt, .cnv, .com, .cpl, .cpx, .crt, .csh
    • .dll, .drv, .dtd
    • .exe, .fxp, .grp
    • .h1s, .hlp, .hta
    • .ime, .inf, .ins, .isp, .its
    • .js, .jse, .ksh, .lnk
    • .mad, .maf, .mag, .mam, .man, .maq, .mar, .mas, .mat, .mau, .mav, .maw, .mda, .mdb, .mde, .mdt, .mdw, .mdz, .msc, .msi, .msp, .mst, .mui
    • .nls, .ocx, .ops
    • .pal, .pcd, .pif, .prf, .prg, .pst
    • .reg, .scf, .scr, .sct, .shb, .shs, .sys
    • .tlb, .tsp, .url
    • .vb, .vbe, .vbs, .vsmacros, .vss, .vst, .vsw
    • .ws, .wsc, .wsf, .wsh
    • .xsd, .xsl
  • Также по умолчанию защищено большинство ключей реестра COM, например:
    • HKEY_CLASSES_ROOT\Interface\{GUID}
    • HKEY_CLASSES_ROOT\Interface\{GUID}\NumMethods
    • HKEY_CLASSES_ROOT\Interface\{GUID}\ProxyStubClsid
    • HKEY_CLASSES_ROOT\Interface\{GUID}\ProxyStubClsid32
  • WRP защищает только минимальное количество папок. В их число входят папки, используемые исключительно для ресурсов ОС, например, некоторые папки inetpub, такие как:
    • $(runtime.bootDrive)\inetpub\uddi\webroot\details\
    • runtime.bootDrive)\inetpub\uddi\webroot\edit\
    • (runtime.bootDrive)\inetpub\uddi\webroot\controls\
    • $(runtime.bootDrive)\inetpub\uddi\bootstrap\

Решение проблемы

Внимание
Данное решение не может использоваться, если приложение идентифицировано как приложение на базе Windows Vista.

Для известных программ установки ошибки типа Access Denied (отказ в доступе) подавляются при следующих условиях:

  • Если программа установки приложения определена как устаревшая программа установки (т.е. если в программе установки нет манифеста).
  • Если возникает ошибка Access Denied, то это связано с тем, что приложение пытается создать или изменить ресурс, защищенный WRP.
  • В некоторых ситуациях негативные последствия попытки удаления ресурсов, защищенных WRP, устраняются автоматически.
  • Если приложение пытается создать новый вложенный ключ или значение в ключе реестра WRP COM, оно может получить сообщение об ошибке Access Denied.

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

Средства решения

  • Не устанавливайте и не обновляйте системные компоненты Windows Vista. Для этого служат распространяемые пакеты Microsoft, специально разработанные для Windows Vista.
  • Не устанавливайте по отдельности компонентов распространяемых пакетов Microsoft, специально разработанных для Windows Vista.
  • Используйте SfcIsFileProtected для обнаружения файлов, защищенных WRP. Если файл защищен WRP, приложение не должно устанавливать или изменять этот файл.
  • Для ключей реестра, защищенных WRP, приложение должно выводить сообщение "Access Denied", связанное с защитой WRP.
  • Убедитесь в правильной работе старых приложений, использующих WRP, путем их пробной установки.

Ссылки

Защищенный режим Internet Explorer

Важность функции

Высокая

Краткое описание

В ОС Windows Vista обозреватель Microsoft Internet Explorer 7 работает в защищенном режиме, позволяющим защитить пользователей от атак за счет значительного ограничения привилегий Internet Explorer. Защищенный режим значительно уменьшает доступные атакующему коду возможности записи, изменения и уничтожения данных на компьютере пользователя и возможности установки вредоносных программ. Он помогает защитить пользователей от несанкционированной установки вредоносных программ. Этот режим устанавливается в Internet Explorer по умолчанию при установке ОС Windows Vista.

Проявления

  • Приложения, использующие Internet Explorer 7, не могут выполнять запись на диск в зоне Интернета или интрасети.
  • Приложения могут не знать, как обрабатывать новые диалоговые окна.

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

Процессы с низким уровнем целостности могут осуществлять запись только в папки, файлы и ключи реестра, которым присвоена обязательная метка низкого уровня целостности. В результате этого Internet Explorer и его расширения работают в защищенном режиме, поддерживающем запись только в области с низким уровнем целостности, в частности новая папка временных файлов Интернете Temporary Internet Files, папка History (журнал), папка Cookies, папка Favorites (Избранное), а также папка временных файлов Windows Temporary Files.

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

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

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

Открыть в полный размер' href="http://msdn.microsoft.com/ru-RU/library/Bb757005.01(l=ru-ru,v=MSDN.10).gif" target=_blank style=color:white;>Открыть в полный размер' href="http://msdn.microsoft.com/ru-RU/library/Bb757005.01(l=ru-ru,v=MSDN.10).gif"> Рис. 1

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

  • %userprofile%\LocalSettings\Temporary Internet Files\Virtualized
  • HKEY_CURRENT_USER\Software\Microsoft\InternetExplorer\InternetRegistry

Два процесса-брокера с высоким уровнем привилегий позволяют обозревателю Internet Explorer и его расширениям выполнять операции, для которых нужен высокий уровень прав, с прямого разрешения пользователя. Например, процесс брокера привилегий пользователя (IEUser.exe) включает набор функций, позволяющий пользователю сохранять файлы в другие области, кроме областей с низким уровнем целостности. Брокер привилегий администратора (IEInstal.exe) позволяет о��озревателю Internet Explorer устанавливать элементы управления ActiveX.

Средства решения

Быстрое решение:

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

Проверка совместимости:

  • Примените быстрое решение и убедитесь, что приложение может выполнять зависимые функции, как и в Windows XP SP2.

Используйте решение на базе возможностей Windows Vista:

  • Измените приложение для работы с защищенным режимом, а также со всеми выводимыми диалоговыми окнами.

Ссылки

Windows Vista 64-bit

Важность функции

Высокая

Краткое описание

Windows Vista полностью поддерживает процессоры AMD и Intel на базе 64-разрядной архитектуры. 64-разрядная версия Windows Vista может выполнять все 32-разрядные приложения с помощью эмулятора WOW64. Однако при этом ядро не поддерживает 16-разрядные приложения, 16-разрядные установочные программы и 32-разрядные драйверы режима ядра.

Все 64-разрядные драйверы должны иметь цифровую подпись для Windows Vista 64-bit. Неподписанные драйверы не поддерживаются, и их нельзя установить в 64-разрядной версии Windows Vista. Проверка цифровой подписи производится при установке и загрузке драйверов.

Проявления

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

    Программа или функция "[exepath]\[app16bit].exe" не может быть запущена или выполнена в связи с несовместимостью с 64-разрядной версией Windows. Дополнительную информацию о наличии версии программного обеспечения, совместимой с 64-разрядной версией Windows, можно получить у разработчика.

  • При запуске 16-разрядной установочной программы или 16-разрядного приложения отображается следующее сообщение об ошибке:

    Версия этого файла не совместима с используемой вами версией Windows. Проверьте системную информацию вашего компьютера, чтобы определить, какая версия программы вам нужна - x86 (32-разрядная) или x64 (64-разрядная), а затем свяжитесь с разработчиком программы.

  • Установка 32-разрядных драйверов ядра в 64-разрядных системах невозможна. Если программа установки самостоятельно добавляет драйвер посредством редактирования реестра, система не загружает этот драйвер, в результате чего может произойти сбой системы.
  • Установка 64-разрядных неподписанных драйверов ядра в 64-разрядных системах невозможна. Если программа установки самостоятельно добавляет неподписанный драйвер посредством редактирования реестра, система не загружает этот драйвер, в результате чего может произойти сбой системы.

Средства решения

Используйте решение на базе возможностей Windows Vista:

  • Все 16-разрядные компоненты следует удалить из приложений и заменить 32-разрядными и 64-разрядными эквивалентами.
  • Все 16-разрядные установочные программы следует преобразовать в 32-разрядные или 64-разрядные.
  • Если приложение использует драйверы режима ядра, необходимо использовать 64-разрядную версию драйвера. Приложение должно определять платформу ОС (32-разрядная или 64-разрядная) и устанавливать соответствующую архитектуру драйвера на базе платформы ОС.
  • Убедитесь в наличии цифровых подписей для всех 64-разрядных драйверов.

Проверка совместимости:

  • Установите и запустите приложение на компьютерах с 32-разрядной и 64-разрядной версиями Windows Vista. Приложение должно нормально функционировать в обеих архитектурах.

Ссылки

Microsoft Graphical Identification and Authentication (GINA)

Важность функции

Высокая (частота: низкая)

Краткое описание

До появления Windows Vista для входа на сервер или оборудование другого производителя компаниям-разработчикам ПО требовалось заменять библиотеку динамических ссылок GINA в Windows XP. Таким приложениям также приходилось заменять существующий пользовательский интерфейс и реализовать в Windows XP функции смарт-карт и удаленного рабочего стола.

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

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

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

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

Функция GINA, использовавшаяся в Windows XP и Windows Server 2003, удалена из Windows Vista. Модули приложений GINA не работают в Windows Vista, и их нужно переписывать с использованием новой модели аутентификации Windows Vista.

Проявления

  • Пользователь не может устанавливать приложения для входа в систему.
  • Пользователь не сможет использовать приложения для входа в систему (на базе технологии Windows XP) в Windows Vista. Эти приложения могут включать:
    • Биометрические устройства.
    • Специальный пользовательский интерфейс.
    • Решения VPN для удаленных пользователей со специальным пользовательским интерфейсом.

Средства решения

Используйте решение на базе возможностей Windows Vista:

  • Модули приложений и компоненты GINA не работают в Windows Vista, и их нужно переписывать с использованием новой модели аутентификации Windows Vista.

Ссылки

  • Чтобы получить дополнительную информацию и ответы на вопросы по поставщикам учетных данных, напишите письмо по адресу: credprov@microsoft.com

Изоляция сеанса 0

Важность функции

Высокая (частота: низкая)

Краткое описание

В Windows XP, Windows Server 2003 и в более ранних версиях Windows все службы выполнялись в рабочем сеансе первого пользователя, входящего в систему. Этот сеанс называется сеансом 0. Одновременное выполнение службы и пользовательских приложений в сеансе 0 представляет собой риск с точки зрения безопасности, поскольку службы имеют высокий уровень привилегий и могут быть использованы вредоносными агентами, ищущими способ повысить собственный уровень привилегий.

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

Примеры классов драйверов, на которые влияет эта функция:

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

Классы приложений, на которых влияет эта функция:

  • Службы, создающие пользовательский интерфейс.
  • Службы, пытающиеся использовать функции сообщений Windows для связи с приложением, например, SendMessage и PostMessage.
  • Приложения, создающие глобальные именованные объекты. Службы, пытающиеся использовать функции сообщений Windows для связи с приложением, например, SendMessage и PostMessage.

Проявления

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

Средства решения

Быстрое решение:

  • Если служба приложения запускает пользовательский интерфейс, встроенное средство решения в Windows Vista позволяет пользователю взаимодействовать с пользовательским интерфейсом сеанса 0 через специальный рабочий стол. Таким образом, приложению будет доступен только пользовательский интерфейс, а не весь рабочий стол сеанса 0.
  • Если приложение использует объекты с глобальными именами, используйте режим совместимости с Windows XP, чтобы убедиться, что приложение продолжит работать со службами сеанса 0.

Проверка совместимости:

  • Проверьте и протестируйте приложение в Windows XP в режиме Terminal Server или быстрого переключения пользователей (FUS). Если приложение нормально работает в Windows XP в этих сценариях, то, вероятнее всего, оно будет нормально работать и в Windows Vista.
  • Убедитесь в том, что приложение работает нормально, установив режим совместимости Windows XP, включающий средство решения ряда проблем сеанса 0.
  • Протестируйте драйвер в Windows Vista, чтобы убедиться, что он работает правильно. Если это невозможно, протестируйте драйвер в Windows XP в режиме FUS при одновременном выполнении нескольких сеансов пользователей. Если драйвер функционирует соответствующим образом для второго и последующих пользователей, работающих в системе, на него не должны повлиять изменения сеанса 0 в Windows Vista. Единственные проблемы, которые не определяются этим тестом, связаны с отсутствием видеодрайвера в сеансе 0 в Windows Vista.

Используйте решение на базе возможностей Windows Vista:

  • Используйте для связи между службами и приложениями клиентские или серверные механизмы, например, вызов удаленной процедуры (RPC) или именованные каналы.
  • Используйте функцию WTSSendMessage для создания простого поля сообщений на рабочем столе пользователя. Это позволит службе отправлять пользователю уведомления и получать простые ответы.
  • Для более сложных пользовательских интерфейсов следует использовать функцию CreateProcessAsUser для создания процесса в сеансе пользователя.
  • Непосредственно выбирайте для всех именованных объектов и выделяемых участков памяти, предоставляемых службой, пространство имен Local\ или Global\.

Ссылки

Сеть: TCP/IP и платформа фильтрации Windows

Важность функции

Высокая

Краткое описание

В Windows Vista полностью переписан сетевой стек. Вместо двухуровневой модели стека, используемой в Windows XP или Windows Server 2003 (для поддержки IPv4 и IPv6), в Windows Vista используется новая архитектура с одним транспортным и пакетным уровнем, поддерживающим несколько уровней IP. Также введено несколько новых функций и дополнений к протоколам. Новый стек имеет модульную, гибкую и расширяемую конструкцию. Хотя предприняты все меры для того, чтобы обеспечить совместимость с существующими приложениями, взаимодействующими со стеком на разных уровнях, однако некоторые изменения (в основном представляющие собой побочные эффекты улучшений) могут вызывать проблемы с совместимостью, и разработчикам следует внимательно оценивать воздействие этих изменений на их приложения.

Прикладной интерфейс API платформы фильтрации Microsoft Windows (WFP) позволяет разработчикам создавать код, взаимодействующий с фильтрацией, которая происходит на нескольких уровнях в сетевом стеке операционных систем Windows Vista и Microsoft Windows Server ("Longhorn") и в самих операционных системах. WFP также обеспечивает интеграцию и поддержку ряда функций брандмауэра, в том числе связь с аутентификацией и динамическую настройку конфигурации брандмауэра на базе использования приложением API сокета.

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

В Windows Vista не поддерживаются следующие элементы стека TCP/IP:

  • Функции драйверов обработчиков брандмауэра и обработчиков фильтров удалены.
  • Инструменты серии R, в том числе rexec, rsh, finger, и т.д. При необходимости эти инструменты доступны в компонентах служб для Unix.
  • Протокол Internetwork Packet Exchange (IPX). Протокол IPX отключен и больше не используется. Это изменение должно оказывать минимальное воздействие на совместимость приложений.

Проявления

  • Если приложение, разработанное для Windows XP, использует только общие функции для работы в сети, никаких проблем с функциональностью быть не должно. Данные функции следует протестировать в Windows Vista.
  • Приложения, использующие функции драйверов обработчиков брандмауэра и обработчиков фильтров, не будут функционировать.
  • Приложения, использующие внутренние структуры и функции, не опубликованные Microsoft, не будут функционировать.
  • Драйверы фильтра интерфейса TDI в режиме ядра могут не функционировать после обновления ОС.

    Примечание
    В будущих версиях поддержка интерфейса TDI будет отключена. Однако эти драйверы все равно будут работать в Windows Vista.

Средства решения

Используйте решение на базе возможностей Windows Vista:

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

    Примечание
    Приложения и сценарии, использующие службы для Unix и инструменты серии R, должны предварительно их устанавливать.

Ссылки

Сеть: API модуля поддержки IP в режиме ядра

Важность функции

Высокая

Краткое описание

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

  • Функции режима ядра для клиентов сокетов Windows в ядре (WSK).
  • Поддержка IPv6.
  • Единый набор функций адресации для IPv4 и IPv6.
  • Единая расширяемая объектная модель.
  • Четко определенная модель безопасности на базе интерфейса сетевых служб.
  • Новые функции стека, в частности отделения и вложенные интерфейсы.

Проявления

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

Средства решения

  • Приложения должны поддерживать и использовать новые прикладные интерфейсы API модуля поддержки IP в режиме ядра.

Ссылки

  • В настоящее время отсутствуют.

Сеть: IPv6

Важность функции

Высокая (частота: средняя)

Краткое описание

В стеке TCP/IP в Windows Vista по умолчанию включен протокол IPv6. Если связь по протоколу IPv6 доступна, она всегда имеет приоритет. Это оказывает следующее воздействие на приложения, использующие стек TCP/IP:

  • Трафик IPv6 отправляется стеком Windows Vista вне зависимости от того, поддерживается ли протокол IPv6 сетью. Поэтому по умолчанию будут генерироваться сообщения запроса маршрутизаторов и изучения окружения.
  • По умолчанию будут использоваться адреса IPv6. Соединение может иметь несколько адресов IPv6, в том числе локальные, глобальные, временные или переходные, например, 6to4, 6over4, ISATAP или Teredo.

    Примечание
    По умолчанию используется Teredo.

  • Windows Vista позволяет настраивать систему для работы только в режиме IPv6. В этом случае IPv4 не поддерживается.

Стек TCP/IP в Windows Vista поддерживает усиленную модель маршрутизации узлов. В этой модели маршрутизация пакетов с компьютеров, имеющих несколько адресов, основывается не только на адресе назначения, но и на исходном адресе пакета. Это изменение необходимо, поскольку в IPv6 каждый компьюте�� получает несколько IP-адресов, и при использовании переходных технологий выглядит с точки зрения маршрутизации, как компьютер с несколькими адресами. Для обеспечения правильной связи в этих сценариях для сетевого стека требуется усиленная модель маршрутизации узлов.

Проявления

Приложения, использующие стек TCP/IP Windows XP или не поддерживающие протокол IPv6 не будут функционировать надлежащим образом и могут привести к сбою или нестабильности системы.

Использование усиленной модели маршрутизации узлов для приложений имеет следующие последствия:

  • Попытки подключиться с адреса, не замкнутого на себя, к адресу, замкнутому на себя, и наоборот, невозможны.
  • Пакеты с исходным адресом 127.0.0.0/8 не могут быть отправлены с компьютера под управлением Windows Vista в сеть.

Средства решения

Приложения следует модифицировать следующим образом:

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

Ссылки

Риски, связанные с совместимостью

Удаленные компоненты

В Windows Vista отсутствуют следующие компоненты, присутствующие в предыдущих версиях Windows:

  • Поддержка драйверов принтеров в режиме ядра: Все драйверы принтера должны соответствовать инфраструктуре драйверов пользовательского режима. Все драйверы принтеров, использующие режим ядра, блокируются Windows Vista при загрузке. Дополнительную информацию можно найти на веб-узле Инфраструктура драйверов UMDF (EN).
  • Справка Windows (WinHelp.exe и WinHlp32.exe) в Windows Vista удалена. Справка Windows не поддерживается в версии Beta 2, в финальной версии удалена часть кода справки Windows. Чтобы просматривать файлы справки с расширением .HLP в Windows Vista, необходимо загрузить и установить компонент "Справка Windows" в центре загрузки Microsoft. Этот компонент нельзя загрузить для версий Beta 2 и RC1. Более подробную информацию можно найти в разделе Поддержка механизмов справки.

    Примечание
    Файлы справки HTML и файлы .CHM поддерживаются Windows Vista.

  • Серверные расширения Microsoft FrontPage . Службы Windows SharePoint Services поддерживают расширенный набор функций для разработчиков.
  • Службы для Macintosh.
  • D3DRM. Windows Vista не будет поддерживать другие графические пакеты, кроме DirectX.
  • Мастер веб-публикаций.
  • NetDDE-По причинам безопасности Windows Vista не поддерживает NetDDE. (технология NetDDE отключена по умолчанию в Windows XP SP 2 и Windows Server 2003). Технология DDE по-прежнему поддерживается. Технология NetDDE позволяет приложениям использовать транспортную среду DDE для прозрачного обмена данными через сеть. В результате этого изменения приложения не могут обмениваться данными через сеть. Решение заключается в том, чтобы использовать другую сетевую технологию, например, DCOM или Windows Communication Foundation. Более подробную информацию о NetDDE можно найти по адресу http://support.microsoft.com/default.aspx?scid=kb;en-us;125703. (EN)

Центр справки и поддержки

Центр справки и поддержки (HelpCtr.exe) представляет собой справочное приложение для Windows XP и Windows Server 2003. Центр справки и поддержки отображает скомпилированные файлы справки с расширением .CHM.

Центр справки и поддержки не входит в состав Windows Vista, и его функции не поддерживаются. Скомпилированные файлы справки с расширением .CHM отображаются только в справочном приложении HTML Help, как описано выше.

Клиент Assistance Platform

Клиент Assistance Platform (HelpPane.exe) представляет собой новый механизм справки для Windows Vista. Он не поддерживает предыдущие версии Windows. Клиент Assistance Platform необходим для отображения файлов справки для файлов с расширением .H1S.

ОЕМ-компании, системные интеграторы и корпоративные пользователи могут настраивать клиент Assistance Platform в Windows Vista по лицензионному соглашению. Другие программы не могут его использовать. Дополнительную информацию по настройке клиента Assistance Platform можно найти в пакете Windows SDK.

Модель VDDM

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

  • Эффективное управление видеопамятью для приложений DX и нового менеджера окон рабочего стола (DWM). Графический процессор в Windows Vista может использоваться несколькими трехмерными приложениями.
  • Обновление драйверов можно выполнять без перезагрузки.
  • Динамическое обнаружение зависания графического процессора и его восстановление без перезагрузки.
  • Поддержка горячего подключения мониторов.
  • Использование аппаратных средств, соответствующих требованиям DX9L.
  • Воспроизведение видео без ошибок.
  • Очень защищенная конструкция.

Хотя на большинство приложений для более ранних версий Windows модель VDDM не влияет, существуют некоторые риски:

  • Совместимость с играми DX, что может приводить к ошибкам исполнения DX, ошибка драйвера видеоподсистемы или проблемам с основным графическим стеком.
  • Проблемы с функциями мобильных устройств (горячие клавиши, клонирование окон, яркость, увеличение) из-за более жестких требований ACPI.
  • Проблемы с доступностью, приложения с функцией увеличения экрана, разработанные для Windows XP, не будут работать в Windows Vista.

Ссылки

  • Отправить отзывы по вопросам графики можно на адрес: lhgfxfb@microsoft.com

Безопасная обработка исключений

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

Безопасная обработка исключений (SEH) связана с использованием флага запрета исполнения. Обработчики исключений проверяются с целью обеспечить пометку page_execute до выдачи исключения, также проверяется правильность кода обработчика и его наличие в таблице SEH.

Операции DLLmain

Порядок загрузки файлов DLL при создании процессов не является гарантированным, и на него не следует полагаться при выполнении операций. Сложная обработка DllMain может вызвать зависание приложений или закрытие приложений с сообщением об ошибке, что связано с новыми зависимостями компонентов ОС. Более подробную информацию можно найти на следующих страницах MSDN:

Переименовано приложение Outlook Express

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

Оболочка: Темы и папка Мои документы

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

Также в Windows Vista изменены расположение и структура папки Мои документы для повышения удобства работы пользователя. Данные пользователя теперь хранятся в структуре папок \users\%username%\ . В этой папке находятся вложенные папки Рисунки, Музыка, Документы, Рабочий стол и Избранное. Если приложение использует функцию ShGetFolderPath и динамические пути к папкам, оно автоматически переключается на новый путь и новое место размещения файлов. В большинстве случаев эти изменения никак не повлияют на совместимость приложений.

Быстрое переключение пользователей (FUS)

Быстрое переключение пользователей (FUS) поддерживается всеми версиями Windows Vista, в том числе компьютерами, подключенными к домену. Приложения и программы установки должны поддерживать FUS и одновременную работу нескольких сеансов пользователей и подключений к терминалу сервера. Более подробную информацию можно найти в разделе Быстрое переключение пользователей в Microsoft Windows XP : Рекомендации по разработке бизнес-приложений (EN).

Изменения кода CriticalSection

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

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

Более подробную информацию можно найти в разделе, посвященном объектам критических секций, в MSDN (EN).

Изоляция привилегий пользовательского интерфейса (UIPI)

По умолчанию в Windows Vista включена изоляция привилегий пользовательского интерфейса (UIPI). Благодаря этому процесс низкого уровня целостности не может связываться с процессом более высокого уровня целостности с помощью сообщений Windows (SendMessage). Это означает, что приложения, работающие со стандартным пользовательским уровнем, не могут связываться с другими приложениями, работающими с уровнем администратора. Это также означает, что в приложениях, устанавливающих обработчики команд клавиатуры и мыши, потребуется изменить манифесты и потребовать присвоение прав. Дополнительную информацию по этой теме можно найти в разделе "Защищенный режим Internet Explorer" в настоящем документе.

Программы по умолчанию

Важность функции

Средняя

Краткое описание

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

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

Ситуация становится еще сложнее, когда на компьютер добавляется несколько пользователей. Разные пользователи начинают использовать разные приложения и перезаписывать поведение по умолчанию. Причина этой проблемы заключается в том, что связи протоколов и файлов обычно контролируются на уровне компьютера посредством записи ключей в раздел реестра HKLM (HKEY_Local_Machine). Помимо этого, некоторые приложения записывают поведения по умолчанию в другие места реестра.

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

Средства решения

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

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

  • Упрощенная процедура принятия программ по умолчанию.
  • Связь программ по умолчанию с протоколами и файлами отдельно для каждого пользователя.
  • Программный способ проверки параметров по умолчанию.
  • Общий пользовательский интерфейс Windows.
  • Место для рекламы в Windows.

Эта функция первоначально предназначалась для приложений, конфликтующих из-за доступа к ресурсам. Речь идет о приложениях, которые хотят быт приложениями по умолчанию для файлов (например, mp3 и jpeg) или протоколов (http или mailto). Приложения, использующие собственные протоколы и связи между файлами, обычно не нуждаются в использовании этой новой функции, поскольку с ними не конкурируют другие приложения. Приложения, которые не конфликтуют из-за доступа к ресурсам, работают и устанавливаются так же, как и в Windows XP. Однако при этом любое приложение может использовать новый модуль "Программы по умолчанию".

Модуль "Программы по умолчанию" встроен в операционную систему, как набор панелей управления и открытых прикладных интерфейсов API. Чтобы приложение могло использовать панели управления или API, их необходимо зарегистрировать во время установки в качестве части программ по умолчанию посредством написания определенной схемы. Это позволит включить приложение в панели управления программами по умолчанию, чтобы пользователь мог восстановить связи файлов и протоколов с программами по умолчанию в любое время.

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

  • Восстановление всех зарегистрированных программ по умолчанию.
  • Восстановление одной зарегистрированной программы по умолчанию.
  • Запрос программы по умолчанию для файла/протокола/меню Пуск.
  • Запуск пользовательского интерфейса программ по умолчанию для определенного приложения.
  • Очистка всех связей для отдельных пользователей.

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

Зачем нужен модуль "Программы по умолчанию":

Важные причины:

  • Модуль "Программы по умолчанию" помогает обнаруживать приложения.
  • Архитектура, позволявшая всем администраторам выполнять запись в раздел реестра HKLM, в Windows Vista изменена.
  • Модуль "Программы по умолчанию" позволяет приложениям сохранять потоки процессов четности XP практически без изменения кода.
  • Использование программ по умолчанию на уровне компьютера не всегда приносит желаемые результаты.

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

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

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

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

Еще одна важная причина использования модуля "Программы по умолчанию" заключается в стабильности желаемых результатов. Связи файлов и протоколов построены на базе иерархической структуры реестра. В этой структуре программы по умолчанию на уровне пользователя являются более приоритетными, чем программы по умолчанию на уровне компьютера. Это означает, что если в коде приложения включен запрос повышения прав с целью его записи в раздел реестра HKLM как программы по умолчанию, как это делается в приложениях для XP, это далеко не всегда будет приводить к желаемому результату. При установке другого приложения подобного рода, использующего API модуля "Программы по умолчанию", устанавливающий связи файлов и протоколов с программами по умолчанию на уровне пользователя, предыдущее приложение перестанет быть программой по умолчанию, поскольку программа по умолчанию на уровне пользователя является более приоритетной.

Пользовательский интерфейс модуля "Программы по умолчанию"

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

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

Открыть в полный размер' href="http://msdn.microsoft.com/ru-RU/library/Bb757005.02(l=ru-ru,v=MSDN.10).gif" target=_blank style=color:white;>Открыть в полный размер' href="http://msdn.microsoft.com/ru-RU/library/Bb757005.02(l=ru-ru,v=MSDN.10).gif"> Рис. 2

Меню Пуск:

Открыть в полный размер' href="http://msdn.microsoft.com/ru-RU/library/Bb757005.03(l=ru-ru,v=MSDN.10).gif" target=_blank style=color:white;>Открыть в полный размер' href="http://msdn.microsoft.com/ru-RU/library/Bb757005.03(l=ru-ru,v=MSDN.10).gif"> Рис. 3

Панель управления - модуль "Программы по умолчанию":

Открыть в полный размер' href="http://msdn.microsoft.com/ru-RU/library/Bb757005.04(l=ru-ru,v=MSDN.10).gif" target=_blank style=color:white;>Открыть в полный размер' href="http://msdn.microsoft.com/ru-RU/library/Bb757005.04(l=ru-ru,v=MSDN.10).gif"> Рис. 4

Страница "Установка программ по умолчанию":

Открыть в полный размер' href="http://msdn.microsoft.com/ru-RU/library/Bb757005.05(l=ru-ru,v=MSDN.10).gif" target=_blank style=color:white;>Открыть в полный размер' href="http://msdn.microsoft.com/ru-RU/library/Bb757005.05(l=ru-ru,v=MSDN.10).gif"> Рис. 5

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

Открыть в полный размер' href="http://msdn.microsoft.com/ru-RU/library/Bb757005.06(l=ru-ru,v=MSDN.10).gif" target=_blank style=color:white;>Открыть в полный размер' href="http://msdn.microsoft.com/ru-RU/library/Bb757005.06(l=ru-ru,v=MSDN.10).gif"> Рис. 6

Команда "Восстановить по умолчанию" восстановит все зарегистрированные для приложения значения по умолчанию. Вкладка "Дополнительно" позволяет пользователю выбирать значения по умолчанию для приложения.

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

Дополнительно

Открыть в полный размер' href="http://msdn.microsoft.com/ru-RU/library/Bb757005.07(l=ru-ru,v=MSDN.10).gif" target=_blank style=color:white;>Открыть в полный размер' href="http://msdn.microsoft.com/ru-RU/library/Bb757005.07(l=ru-ru,v=MSDN.10).gif"> Рис. 7

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

"Программы по умолчанию" - рекомендации и передовые методики:

Установка

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

  1. Установить необходимые двоичные файлы (как и в XP).
  2. Записать идентификаторы программы в реестр HKLM (как и в XP).

    Примечание
    Для привязки к файлам или протоколам приложения должны создавать собственные идентификаторы (ProgID).

  3. Запросить привязку к файлам на уровне компьютера (как и в XP).
  4. Внести записи в новую схему "Программы по умолчанию" (новое в Windows Vista).

После установки

При первом запуске:

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

  1. Принять параметры, устанавливаемые по умолчанию (действие по умолчанию).
  2. Изменить параметры.

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

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

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

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

Пример: медиа-проигрыватель Litware:

Открыть в полный размер' href="http://msdn.microsoft.com/ru-RU/library/Bb757005.08(l=ru-ru,v=MSDN.10).gif" target=_blank style=color:white;>Открыть в полный размер' href="http://msdn.microsoft.com/ru-RU/library/Bb757005.08(l=ru-ru,v=MSDN.10).gif"> Рис. 8

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

Пр��верка установки приложения в качестве программы по умолчанию:

Многие приложения, например, браузеры и клиенты электронной почты, связаны с файлами и протоколами, незнакомыми конечным пользователям. В качестве примера можно назвать протоколы HTTP:\ и Mailto:\. При запуске эти приложения обычно проверяют, являются ли они программами по умолчанию. Для этого они должны использовать новый набор API модуля "Программы по умолчанию". Если приложение не является программой по умолчанию, оно должно выводить диалоговое окно со следующими вариантами выбора:

  1. Оставить все без изменение.
  2. Сделать это приложение программой по умолчанию.

В приложениях также должна быть по умолчанию включенная опция вывода предупреждения "Сообщать мне, когда <приложение> перестает быть программой по умолчанию". Приложения НЕ должны устанавливаться как программы по умолчанию без подтверждения пользователя. Это правило должно реализовываться посредством вызова прикладных интерфейсов API модуля "Программы по умолчанию" для восстановления всех зарегистрированных связей приложения.

Пример - Internet Explorer:

Открыть в полный размер' href="http://msdn.microsoft.com/ru-RU/library/Bb757005.09(l=ru-ru,v=MSDN.10).gif" target=_blank style=color:white;>Открыть в полный размер' href="http://msdn.microsoft.com/ru-RU/library/Bb757005.09(l=ru-ru,v=MSDN.10).gif"> Рис. 9

Регистрация в модуле "Программы по умолчанию"

Модуль "Программы по умолчанию" прямо регистрирует каждое предложение для всех файлов и протоколов, к которым оно хочет быть привязано, как программа по умолчанию. Это выполняется посредством регистрации в HKLM следующей схемы. Обратите внимание, что ApplicationDescription может представлять собой как строку, так и ссылку на ресурс. Последний вариант поддерживает MUI.

HKLM\%APPLICATIONCAPABILITYPATH%
   ApplicationDescription = REG_EXPAND_SZ "@path\to\dll.dll,-resourceId"
   ApplicationName = REG_EXPAND "@path\to\dll.dll,-resourceId"
   \FileAssociations
   .file-extension = REG_SZ "file-extension-progid"
   \UrlAssociations
   url-scheme = REG_SZ "url-scheme-progid"
   \MIMEAssociations
      MIME = REG_SZ "mime-progrid"
   \Startmenu  REG_SZ            
   StartmenuInternet ="%app Name%"
          Mail ="%App Name%"

Примечание
Это указатели приложений, зарегистрировавшихся как программы по умолчанию в разделе HKLM\software\clients. Это значение должно быть именем ключа в разделе реестра HKLM\software\clients\StartmenuInternet или HKLM\software\clients\Mail.

HKLM\Software\RegisteredApplications
   unique-app-name = REG_SZ "%APPLICATIONCAPABILITYPATH%"

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

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

Пример использования веб-обозревателя Contoso:

Примечание
Для обеспечения возможности локализации это должен быть файл DLL.

HKLM\software\Contoso\WebBrowser\Capabilities
   Description =" The award-winning Web browser is better than ever. 
   Search the internet in second and find anything you want. Use 
   integrated tabs and new phishing detectors to enhance your internet experience."
\FileAssociations
  .htm = ContosoHTML
  .html = ContosoHTML
  .shtml = ContosoHTML
  .xht = ContosoHTML
  .xhtml = ContosoHTML
\UrlAssociations
  http = Contoso.Url.Http
  https = Contoso.Url.Https
  ftp = Contoso.Url.ftp
\Startmenu
  StartmenuInternet = "Contoso.exe"

HKLM\software\RegisteredApplications
  Contoso.WebBrowser.1.06 = software\Contoso\WebBrowser\Capabilities

Идентификаторы ProgId

Приложения должны иметь идентификаторы ProgId. Эти идентификаторы должны содержать всю информацию, записываемую в ключ по умолчанию. Приложения могут привязывать идентификатор progid к одному или нескольким протоколам/расширениям файлов. Оба варианта работают одинаково. В примере выше ContosoHTML указывает на один идентификатор progid, имеющий информацию shellexecute для файлов с расширением htm, html, shtml, xht и xhtml. При работе с протоколами определяется отдельный идентификатор progid для каждого протокола. В связи с этим строки исполнения для разных протоколов различаются.

При определении идентификатора ProgID для MIME, в этот идентификатор следует включить подключ CLSID с идентификатором класса для соответствующего приложения. Он используется для сверки с идентификатором класса в базе данных MIME, хранящемся в HKLM.

Определения значений

Capabilities - Вложенный ключ реестра, в котором содержится вся информация модуля "Программы по умолчанию" для определенного приложения. Вложенный ключ capabilities всегда находится на более низком уровне, чем ключи реестра приложений.

Description - Модуль "Программы по умолчанию" разработан так, чтобы пользователи могли свободно делать выбор на основании имеющейся информации. Мы позволяем всем приложениям регистрировать строки описаний, чтобы каждое приложение могло сообщать пользователю о своих возможностях. Это значение является свойством в ключе \capabilities.

Примечание
Это поле обязательно. Приложение должно содержать здесь запись, которая будет отображаться в пользовательском интерфейсе. Обязательно локализуйте соответствующие строки.

ApplicationName - Указывает имя приложения, которое отображается в пользовательском интерфейсе модуля "Программы по умолчанию". Если это поле не заполнено, модуль "Программы по умолчанию" использует имя исполняемого файла, связанного с первым зарегистрированным идентификатором progid для данного приложения. Значение имени ApplicationName всегда должно соответствовать значению имени RegisteredApplications.

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

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

MIMEAssocaitions - В этом вложенном ключе перечисляются все MIME, к которым данное приложение хочет быть привязано, как приложение по умолчанию. Каждая привязка сохраняется как свойство вложенного ключа MIMEAssocations. Указанное имя MIME должно точно соответствовать имени, хранящемуся в базе данных MIME. Значение должно представлять собой идентификатор progid для определенного приложения, содержащий в себе идентификатор CLSID.

Startmenu - Вложенный ключ startmenu предназначается для команд меню "Пуск" для работы с Интернетом и электронной почтой. Приложения, регистрирующиеся как претенденты на привязку к этим командам, могут указывать соответствующие связи в записи модуля "Программы по умолчанию" в реестре. Регистрация в меню "Пуск" позволяет приложению показать, что оно хочет, чтобы соответствующая ссылка отображалась в записи модуля "Программы по умолчанию" для электронной почты или Интернета. Если эта информация указана, и пользователь делает приложение программой по умолчанию, данное приложение также связывается с меню "Пуск". Регистрация заключается во включении имени зарегистрированного ключа в раздел HKLM\software\clients\StartMenuInternet или HKLM\software\clients\Mail. При привязке к почтовому клиенту этот ключ также определяет почтовый клиент MAPI, используемый по умолчанию.

Примечание
Регистрация в меню "Пуск" также может выполняться отдельно. Дополнительную информацию можно найти на следующей странице: http://msdn2.microsoft.com/library/aa969350.aspx

HKLM\software\RegisteredApplications - RegisteredApplications позволяет ОС определить, где хранится вся информация о приложении. Это значение должно соответствовать имени приложения.

Использование API модуля "Программы по умолчанию"

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

typedef [v1_enum] enum tagASSOCIATIONLEVEL
{
   AL_MACHINE,
   AL_EFFECTIVE,
   AL_USER
} ASSOCIATIONLEVEL;

typedef [v1_enum] enum tagASSOCIATIONTYPE
{
   AT_FILEEXTENSION,
   AT_URLPROTOCOL,
   AT_STARTMENUCLIENT,
   AT_MIMETYPE
} ASSOCIATIONTYPE;

[
   object,
   uuid(4e530b0a-e611-4c77-a3ac-9031d022281b),
   pointer_default(unique),
   helpstring("Application File Extension and URL Protocol Registration")
]

interface IApplicationAssociationRegistration : IUnknown
{
   HRESULT QueryCurrentDefault(
      [in, string] LPCWSTR pszQuery,
      [in] ASSOCIATIONTYPE atQueryType,
      [in] ASSOCIATIONLEVEL alQueryLevel,
      [out, string] LPWSTR* ppszAssociation);

   HRESULT QueryAppIsDefault(
      [in, string] LPCWSTR pszQuery,
      [in] ASSOCIATIONTYPE atQueryType,
      [in] ASSOCIATIONLEVEL alQueryLevel,
      [in, string] LPCWSTR pszAppRegistryName,
      [out] BOOL* pfDefault);

   HRESULT QueryAppIsDefaultAll(
      [in] ASSOCIATIONLEVEL alQueryLevel,
      [in, string] LPCWSTR pszAppRegistryName,
      [out] BOOL* pfDefault);

   HRESULT SetAppAsDefault(
      [in, string] LPCWSTR pszAppRegistryName,
      [in, string] LPCWSTR pszSet,
      [in] ASSOCIATIONTYPE atSetType);

   HRESULT SetAppAsDefaultAll(
      [in, string] LPCWSTR pszAppRegistryName);

   HRESULT ClearUserAssociations();
}
   
interface IApplicationAssociationRegistrationUI : IUnknown
{
   HRESULT LaunchAdvancedAssociationUI([in, string] LPCWSTR pszAppRegName);
}

AssociationLevel

AL_MACHINE - выводит установленную для компьютера программу по умолчанию для расширения.

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

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

AL_USER - выводит программу по умолчанию для текущего пользователя. При отсутствии программы по умолчанию для текущего пользователя выводится код ошибки 0x80070483.

AssociationType

AT_FILEEXTENSION - используется для запроса расширения файла (например, .htm или .mp3)

AT_URLPROTOCOL - используется для запроса протокола (например, http:// или mailto:)

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

AT_MIMETYPE - используется для запроса типа MIME, например, audio/mp3.

QueryCurrentDefault

При указании расширения (.mp3, HTTP, и т.д.), типа расширения и уровня привязки выводится идентификатор ProgID для текущей программы по умолчанию. Обычно приложения должны использовать уровень привязки AL_EFFECTIVE, поскольку он определяет программу по умолчанию, действующую для текущего пользователя. Вызывающий код должен выполнять команду CoTaskMemFree для выводимой строки progid.

QueryAppIsDefault

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

QueryAppIsDefaultAll

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

SetAppAsDefault

Указание имени зарегистрированного приложения, расширения (.mp3, HTTP, и т.д.) и типа расширения. Зарегистрированное приложение устанавливается, как программа по умолчанию.

SetAppAsDefaultAll

Указание имени зарегистрированного приложения. Зарегистрированное приложение устанавливается как программа по умолчанию для всех привязанных к нему расширений файлов и протоколов.

ClearUserAssociations

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

LaunchAdvancedAssociationUI

Указанное регистрационное имя приложения должно соответствовать одному из значений в разделе HKLM\Software\RegisteredApplications. Этот прикладной интерфейс запускает страницу Set Program Associations для указанного приложения. Он предназначен для использования приложениями, которым требуется прямая связь с расширенной конфигурацией привязок.

Примечание
Этот набор API доступен только для ОС Windows Vista и последующих версий. Приложения, поддерживающие предыдущие версии ОС (XP, Win2K и Win98) должны использовать готовый код установки программ по умолчанию для этих ОС, проводя предварительную проверку конфигурации для того, чтобы различать ОС Windows Vista и более ранние версии ОС.

Примеры кода

Ниже приведен пример реализации набора API для регистрации веб-обозревателя Contoso.

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

HRESULT CheckContosoHasAllDefaults(__out BOOL* pfHasAllDefaults)
{
    IApplicationAssociationRegistration* pAAR;

    HRESULT hr = CoCreateInstance(CLSID_ApplicationAssociationRegistration,
                                  NULL,
                                  CLSCTX_INPROC,
                                  __uuidof(IApplicationAssociationRegistration),
                                 (void**)&pAAR);
    if (SUCCEEDED(hr))
    {
        hr = pAAR->QueryAppIsDefaultAll(AL_EFFECTIVE,
                                        L"Contoso.WebBrowser.1.06",
                                        pfHasAllDefaults);

        pAAR->Release();
    }

    return hr;
}

Запрос подтверждения того, что веб-обозреватель Contoso установлен, как программа по умолчанию для расширения .htm:

HRESULT CheckContosoHasDotHTM(__out BOOL* pfHasDotHTM)
{
    IApplicationAssociationRegistration* pAAR;

    HRESULT hr = CoCreateInstance(CLSID_ApplicationAssociationRegistration,
                                  NULL,
                                  CLSCTX_INPROC,
                                  __uuidof(IApplicationAssociationRegistration),
                                  (void**)&pAAR);
    if (SUCCEEDED(hr))
    {
       hr = pAAR->QueryAppIsDefault(L".htm",
                                     AT_FILEEXTENSION,
                                     AL_EFFECTIVE,
                                     L"Contoso.WebBrowser.1.06",
                                     pfHasDotHTM);
        pAAR->Release();
    }
    return hr;
}

Установка веб-обозревателя Contoso, как программы по умолчанию для расширения .htm:

HRESULT SetContosoAsDefaultForDotHTM()
{
    IApplicationAssociationRegistration* pAAR;

    HRESULT hr = CoCreateInstance(CLSID_ApplicationAssociationRegistration,
                                  NULL,
                                  CLSCTX_INPROC,
                                  __uuidof(IApplicationAssociationRegistration),
                                  (void**)&pAAR);
    if (SUCCEEDED(hr))
    {
        hr = pAAR->SetAppAsDefault(L"Contoso.WebBrowser.1.06",
                                   L".htm",
                                   AT_FILEEXTENSION);

        pAAR->Release();
    }

    return hr;
}

Материалы по привязке файлов

Более подробную информацию по привязке файлов можно найти на следующей странице: http://msdn2.microsoft.com/library/aa969346.aspx (EN)

Более подробную информацию по регистрации программ для типов клиентов можно найти на следующей странице: http://msdn2.microsoft.com/library/aa969350.aspx (EN)

Более подробную информацию по командам для привязки файлов можно найти на следующей странице: http://msdn2.microsoft.com/library/aa969385.aspx (EN)

Более подробную информацию по типам файлов можно найти на следующей странице: http://msdn2.microsoft.com/library/aa969371.aspx (EN)

Помощник по обеспечению совместимости программ (PCA) в Windows Vista - Документация для пользователя

Введение в PCA

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

Примечание
PCA - клиентский компонент, он не доступен в серверной версии.

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

Сценарии РСА

Обнаружение ошибок установки

Один из основных сценариев использования PCA заключается в обнаружении ошибок установки приложений в Windows Vista. В качестве решения РСА предлагает применять режим совместимости Windows XP.

Наиболее распространенная ошибка установки связана с тем, что в программах установки закодирована проверка версии Windows, в которой они запускаются. Обычно эти программы установки прекращают работать и выводят сообщение об ошибке, гласящее, что текущая версия Windows не поддерживается. Обычно эти программы используют API GetVersion или GetVersionEx для получения информации о текущей версии Windows. В Windows Vista эти API выводят основной номер версии 6. Если программа закодирована на работу с версией XP (основной номер версии 5), она не будет работать в Windows Vista. Исправление XPVersionLie в режиме совместимости с Windows XP сообщает программе номер версии XP при вызове API GetVersion или GetVersionEx.

Ниже приведен пример сообщения об ошибке программного обеспечения Microsoft Intellitype для клавиатуры и мыши, которое не работало в Windows Vista, что выяснилось при тестировании совместимости приложений в Windows,

Открыть в полный размер' href="http://msdn.microsoft.com/ru-RU/library/Bb757005.10(l=ru-ru,v=MSDN.10).gif" target=_blank style=color:white;>Открыть в полный размер' href="http://msdn.microsoft.com/ru-RU/library/Bb757005.10(l=ru-ru,v=MSDN.10).gif"> Рис. 10

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

Открыть в полный размер' href="http://msdn.microsoft.com/ru-RU/library/Bb757005.11(l=ru-ru,v=MSDN.10).gif" target=_blank style=color:white;>Открыть в полный размер' href="http://msdn.microsoft.com/ru-RU/library/Bb757005.11(l=ru-ru,v=MSDN.10).gif"> Рис. 11

Когда пользователь выбирает опцию 'Переустановить с рекомендуемыми параметрами', программа установки будет автоматически перезапущена в режиме совместимости с Windows XP.

Ответы на вопросы, приведенные ниже, помогут лучше понять, что при этом происходит:

  1. Какова логика обнаружения, и как PCA понимает, что в программе установки происходит ошибка из-за проблем с версией?

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

  2. Как PCA получает информацию о программах установки?

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

  3. Для чего служат разные опции в диалоговом окне PCA?
    • 'Переустановить с использованием рекомендуемых параметров'

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

    • 'Программа установлена правильно'

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

    • 'Отмена'

      PCA не предпринимает никаких действий.

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

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

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

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

Ниже приведен пример диалогового окна PCA, которое выводится в этом сценарии. В качестве примера взята программа для тестирования.

Открыть в полный размер' href="http://msdn.microsoft.com/ru-RU/library/Bb757005.12(l=ru-ru,v=MSDN.10).gif" target=_blank style=color:white;>Открыть в полный размер' href="http://msdn.microsoft.com/ru-RU/library/Bb757005.12(l=ru-ru,v=MSDN.10).gif"> Рис. 12

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

Открыть в полный размер' href="http://msdn.microsoft.com/ru-RU/library/Bb757005.13(l=ru-ru,v=MSDN.10).gif" target=_blank style=color:white;>Открыть в полный размер' href="http://msdn.microsoft.com/ru-RU/library/Bb757005.13(l=ru-ru,v=MSDN.10).gif"> Рис. 13

Ответы на вопросы, приведенные ниже, помогут лучше понять, что при этом происходит:

  1. Какова логика обнаружения, и как PCA понимает, что ошибка программы связана с запуском подчиненного исполняемого файла, который требует прав администратора? Обнаружение в данном сценарии реализуется с помощью инструментария API CreateProcess, позволяющего обнаружить ситуации, когда происходит ошибка запуска дочернего процесса из-за требования повышения уровня прав.
  2. Почему в этом диалоговом окне PCA нет никаких опций?

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

Информирование пользователей при запуске о выявленных проблемах с совместимостью программ

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

Существует два типа приложений apphelp. Если известно, что программа не совместима, и если выполнение программы может оказать серьезное воздействие на систему (например, вызвать остановку работы или невозможность загрузки), будет выведено сообщение о блокировке, как показано ниже.

Примечание
Корпорация Майкрософт получает согласие компаний-разработчиков на блокировку программ.

Открыть в полный размер' href="http://msdn.microsoft.com/ru-RU/library/Bb757005.14(l=ru-ru,v=MSDN.10).gif" target=_blank style=color:white;>Открыть в полный размер' href="http://msdn.microsoft.com/ru-RU/library/Bb757005.14(l=ru-ru,v=MSDN.10).gif"> Рис. 14

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

Открыть в полный размер' href="http://msdn.microsoft.com/ru-RU/library/Bb757005.15(l=ru-ru,v=MSDN.10).gif" target=_blank style=color:white;>Открыть в полный размер' href="http://msdn.microsoft.com/ru-RU/library/Bb757005.15(l=ru-ru,v=MSDN.10).gif"> Рис. 15

В обоих случаях при выборе варианта 'Проверка решений' отправляется отчет об ошибке Windows, после чего с веб-узла Майкрософт получается ответ, предлагающий решение проблемы. Ответы выводятся в клиентском окне "Решения проблем" (wercon.exe). Обычно ответы бывают трех типов:

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

Управление параметрами, которые были изменены PCA

Режим совместимости применяется к программам посредством установки ключа реестра в разделе 'Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers'. Имя ключа должно содержать полный путь к исполняемому файлу, а значение - название применяемого режима совместимости.

Для сценария программы установки:

  • Режим совместимости называется 'WINXPSP2' и применяется к исполняемому файлу программы установки.
  • Этот ключ реестра записывается в разделе HKEY_LOCAL_MACHINE, в результате чего установленное решение действует для всех пользователей.

Для сценария UAC:

  • Режим совместимости называется 'ELEVATECREATEPROCESS' и применяется к исполняемому файлу программы. Этот ключ реестра записывается в разделе HKEY_CURRENT_USER, в результате чего установленное решение действует только для текущего пользователя.
  • Для удаления режимов совместимости, установленн��х PCA, необходимо удалить эти ключи.

Исключение программ из РСА

PCA предназначается для обнаружения проблем со старыми программами и не следит за программами, разработанными для ОС Windows Vista. Самый лучший вариант исключения программы из PCA заключается в том, чтобы включить в нее манифест уровня доступа (администратор или стандартный пользователь) для системы UAC. Это означает, что программа протестирована на совместимость с UAC (и Windows Vista). PCA проверяет наличие этого манифеста, и исключает программу из своего списка. Это относится как к программам установки, так и к обычным программам. Более подробную информацию по управлению правами доступа и созданию манифеста UAC можно найти на следующей странице: http://msdn2.microsoft.com/library/Aa480150.aspx (EN).

Также имеется групповая политика, позволяющая отключить РСА для всех программ.

Данная политика называется 'Отключить Помощник по обеспечению совместимости программ' и находится в разделе 'Административные шаблоны -> Компоненты Windows -> Совместимость приложений' в редакторе групповых политик (gpedit.msc).

Управление сообщениями Apphelp

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

Инструмент Compatibility Administrator входит в состав набора Application Compatibility Toolkit. Более подробную информацию об этом наборе можно найти на следующей странице: http://technet.microsoft.com/windowsvista/aa905078.aspx

GDI

Различия поведения при рисовании (WM_PAINT)

Важность функции

Низкая

Краткое описание

В новом менеджере окон рабочего стола корпорация Майкрософт внесла небольшие изменения в процесс рисования окон приложений на экране. До появления Windows Vista вывод hwnd осуществлялся непосредственно на экран, что давало определенные преимущества, но ограничивало возможности Windows по отображению окон верхнего уровня и управлению ими. В Windows Vista выполняется рендеринг всех окон верхнего уровня в битовом изображении (как в WS_EX_LAYERED), и менеджер окон рабочего стола объединяет изображения для рисования рабочего стола.

Проявления

Черные области вокруг подсказок, всплывающих меню, всплывающих заставок, и других подобных объектов.

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

Черные участки

Сходная проблема возникает, когда приложение выполняет рисование, не используя WM_PAINT. USER определяет, что приложение выполняет рисование, и перерисовывает рабочий стол, однако при этом приложение может еще не завершить рисование hwnd, в результате чего битовое изображение может содержать неинициализированные пиксели (черные). Корпорация Майкрософт активно работает над решением проблем и в этой области, и поэтому мы просим отправлять нам отзывы и предложения по данному вопросу.

Отключение прозрачности для приложения

Это происходит, когда приложение рисует в области окна, не относящейся к клиенту (панель заголовка).

Ластики, тени и другие специальные эффекты

Эти объекты обычно рисуются с помощью GetDC(NULL); однако чтение и запись в GetDC(NULL) сопряжены с проблемами, когда приложения используют битовое изображение, а не рисуют изображение непосредственно на экране. Чтение и запись на экран происходят значительно медленнее, чем в Windows XP. Кроме того, поддерживаются не все операции растеризации GDI (XOR поддерживается).

Улучшенная поддержка азиатских шрифтов

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

Производительность рендеринга

Важность функции

Низкая

Краткое описание

Большинство приложений работают Windows Vista так же как раньше, и даже быстрее, но за некоторыми изменениями необходимо следить.

Проявления

Снизилась производительность рисования GDI?

Рендеринг примитивов GDI, таких как LineTo и Rectangle, теперь осуществляется на программном уровне, а не на уровне оборудования, что упрощает драйверы экрана. Мы не думаем, что это повлияет на большое число приложений, но если вы с этим столкнетесь, сообщите нам.

Медленный рендеринг текста?

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

Уменьшено адресное пространство приложения?

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

Операции чтения и записи GetDC(NULL)

Эти операции выполняются медленнее, чем в предыдущих версиях Windows, потому что теперь приложения выполняют рендеринг в битовое изображение, а не непосредственно на экран. По возможности используйте рисование в HDC с использованием HWND, или создавайте окна поверх других окон. Для получения снимка экрана по прежнему рекомендуется использовать GetDC(NULL).

UIPI (графический интерфейс управления учетными записями пользователей)

Важность функции

Низкая

Краткое описание

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

Приложения с низким уровнем привилегий не могут отправлять сообщения приложениям с более высоким уровнем привилегий, если эти приложения с более высоким уровнем привилегий явно не требуют отправки таких сообщений посредством вызова функции ChangeWindowMessageFilter(). Приложения с низким уровнем привилегий имеют доступ для чтения к HWND приложений с более высоким уровнем привилегий. Для целей совместимости будут выводиться сообщения об успешном выполнении операции SendMessage и других API, даже если API блокируется из-за недостаточного уровня привилегий. Кроме того, в случаях, когда имеются проблемы с совместимостью, а уровень риска невелик, приложения с низким уровнем привилегий могут отправлять сообщения приложениям с высоким уровнем привилегий без запроса.

Проявления

Приложения перестают взаимодействовать с другими приложениями.

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

Не работают операции вырезания и вставки из одного приложения в другое.

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

Средства решения

Обработчики ведения журнала

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

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

SendInput

RegisterWindowMessage

BroadcastSystemMessageEx

BroadcastSystemMessage

SetWindowsHook

SetWindowsHookEx

CallNextHookEx

CallNextHook

SetWinEventHook

AttachThreadInput

FindWindowEx

FindWindow

CreateDesktop

CreateDesktopEx

OpenDesktop

OpenInputDesktop

EnumDesktops

EnumDesktopWindows

SwitchDesktop

SetThreadDesktop

GetThreadDesktop

CloseDesktop

CreateWindowStation

OpenWindowStation

EnumWindowStations

CloseWindowStation

GetProcessWindowStation

Этот список не является исчерпывающим и не гарантирует все, что можно изменить, однако он позволяет сбалансировать обнаружение проблем с минимальным количеством ложных положительных результатов. Вы можете выполнить поиск в исходных файлах с помощью команды findstr /s /g:temp.txt *.c *.cpp *.h *.hpp , где temp.txt - приведенный выше список API, скопированный в текстовый файл.

Масштабирование в высоком раз��ешении

Важность функции

Низкая

Краткое описание

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

Проявления

В течение долгого времени размеры пикселей не менялись, однако в последнее время производители ЖК-дисплеев начинают выпускать мониторы с пикселями уменьшенного размера, т.е. с большим количеством точек на дюйм (dpi). Если приложение использует на экране с высоким разрешением такое же число пикселей, что и на стандартном экране с разрешением 96 точек на дюйм, это приложение выглядит на экране очень маленьким. В Windows Vista появилась возможность масштабирования приложений, написанных для экранов с разрешением 96 точек на дюйм. Масштабирование выполняется посредством рендеринга битового изображения приложения с увеличенным размером. Как и всегда при масштабировании битовых изображений это может привести к некоторой размытости, однако во всех остальных отношениях обеспечивает нормальный размер и правильность рендеринга изображения. В приложениях также может быть реализована поддержка высокого разрешения, обеспечивающая самое высокое качество изображения. Сейчас приложения могут отключать масштабирование и объявлять о поддержке определения разрешения с помощью вызова SetProcessDPIAware().. В настоящее время рассматриваются способы объявления, основанные на использовании манифестов. Более подробную информацию по написанию приложений с встроенной поддержкой высокого разрешения можно найти на следующей странице: http://msdn2.microsoft.com/library/ms969894.aspx (EN).

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

Из-за этого и возникает большинство проблем с совместимостью. На что нужно обращать внимание при тестировании:

  • Текст обрезан (частично скрыт).
  • Слишком большой текст.
  • Что-то отображается не там где нужно и не в том масштабе.

Средства решения

Более подробную информацию по написанию приложений с встроенной поддержкой высокого разрешения можно найти на следующей странице: http://msdn2.microsoft.com/library/ms969894.aspx.

Значки PNG

Важность функции

Низкая

Краткое описание

Формат файлов значков (*.ico) теперь поддерживает графические файлы в формате PNG в дополнение к графическим файлам в формате BMP. Многие значки в Windows Vista используют формат PNG.

Проявления

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

Ссылки

Эта информация является дополнением к информации, находящейся на следующей странице: http://msdn2.microsoft.com/library/Aa480152.aspx (EN)

Укрепление именованных программных каналов

Краткое описание

В Windows Vista учетные записи с низким уровнем привилегий используются многими службами, например, сетевыми (NS) или локальными (LS). Целью укрепления защиты служб заключается в том, чтобы лучше отделить службы друг от друга, чтобы в случае заражения или взлома одной службы, она не могла атаковать остальную часть системы. Именованные программные каналы в Windows Vista укрепляются с помощью серверов RPC, что предотвращает попытки других процессов взломать или захватить их.

В Windows XP сервер вызова удаленной процедуры RPC создает именованный канал, и уровень контроля доступа этого канала предоставляет уровень доступа "Полный контроль" локальной или сетевой службе. При этом они получают возможность создавать серверные экземпляры канала, к которым могут подключаться клиенты. Экземпляры канала должны создаваться только тем процессом, который первоначально создает сам этот канал. Изменение уровня контроля доступа (ACL) ограничивает возможность создания серверных экземпляров. Теперь их может создавать только тот процесс, который первоначально создает канал.

Проявления

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

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

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

Epmapper

Eventlog

Dav rpc

Keysvc

Winreg

Tapserv

W32time_alt

Termsvcapi

Ctx_winsta

Hydralspipe

Исключение или замена SPAP (Pstore)

Краткое описание

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

Средства решения

Использование DPAPI для реализации процедур PStore.

Более подробную информацию о существующих объектах PStore и использовании DPAPI для управления ими можно найти на следующей странице: http://msdn2.microsoft.com/library/ms995355.aspx (EN)

Поставщики WMI: Стандартная модель безопасности

Краткое описание

Стандартная модель HostingModel для поставщиков WMI изменена с LocalSystem на NetworkServiceHost.

В предыдущих версиях Windows (до Windows Vista Beta 2) по умолчанию для поставщика WMI (свойство __Win32Provider.HostingModel ) устанавливалась модель LocalSystem. Поскольку учетная запись LocalSystem имеет очень высокий уровень привилегий, работа поставщика WMI в этом контексте создает риск несанкционированного повышения уровня привилегий (степень риска зависит от качества кода и качества тестирования поставщика).

В большинстве случаев контекст LocalSystem не требуется, и более подходящим является контекст NetworkServiceHost. Это особенно верно с учетом того, что большинство поставщиков WMI должны олицетворять (ImpersonationLevel=1) клиентский контекст безопасности для выполнения требуемых операций клиентом WMI.

Проявления

Если у поставщика WMI нет определения модели владельца, и если он выполняется так, как если бы он работал на уровне LocalSystem, он не будет работать надлежащим образом.

Средства решения

Ожидаемая модель безопасности должна быть изменена, чтобы код поставщика WMI выполнял операции в контексте безопасности клиента, олицетворяя клиент WMI. Случаи, когда требуется изменение контекста безопасности LocalSystem, встречаются крайне редко. Однако в случае если использование уровня LocalSystem является абсолютной необходимостью, модель владельца необходимо устанавливать явным образом с помощью утверждения HostingModel=LocalSystemHost в файле MOF поставщика.

Ссылки

Служба теневого копирования томов

Краткое описание

Служба теневого копирования томов (VSS) - это новая служба Windows XP и Windows Server 2003. Она упрощает связь между приложениями, подсистемами хранения данных и приложениями для управления хранением данных (в том числе приложениями для резервного копирования). Эта служба определяет, устанавливает и использует копии данных для определенных моментов времени.

Проявления

Совместимость с приложениями для резервного копирования в Windows XP

Некоторые интерфейсы изменились со времен XP, а библиотеки могут быть не совместимы с Windows Vista. Приложения следует перекомпилировать с использованием заголовков или библиотек пакета VSS SDK 7.2 или пакета Platform SDK, выпущенного с версией Windows Vista Beta 2.

Совместимость с приложениями для резервного копирования в Windows Server 2003 SP1

Двоичные файлы Windows Server 2003 SP1 совместимы с Windows Vista. Большинство приложений для резервного копирования также должны учитывать изменения в устройствах записи, изменения виртуализации файлов и реестров, изменения WRP, а также использование прямых ссылок в %windir%system32, в результате чего вероятность нормальной работы приложений Windows Server 2003 SP1 значительно уменьшается.

Компиляция приложений резервного копирования для Windows Vista

Приложения, использующие доступные интерфейсы Server 2003, можно скомпилировать с помощью заголовков и библиотек из пакета VSS SDK 7.2. Чтобы использовать новые интерфейсы Windows Vista, необходимо выполнить перекомпиляцию с использованием заголовков и библиотек VSS из пакета Platform SDK для Windows Vista. Первая версия пакета SDK с компонентами VSS была выпущена вместе с версией Windows Vista Beta 2.

Устройства записи VSS в Windows Vista

Устройство записи в реестр Registry Writer

Теперь Registry Writer отвечает за резервное копирование и восстановление реестра, заменяя предыдущую схему. Средство записи Registry Writer не сообщает о пользовательских комплексах (ульях).

Средство записи COM+ RegDB

Данное средство выполняет резервное копирование содержимого %systemroot%\registration. COM+ зависит от ключа реестра, для которого выполняется резервное копирование, и поэтому резервное копирование и восстановление COM+ требуется выполнять одновременно с соответствующими операциями с реестром.

Средство записи MS Search Writer

Удаляет поисковый индекс из теневых копий после создания.

Средство записи MSDE Writer

Средство записи, используемое по умолчанию для баз данных SQL 2000 и SQL 2005.

Средство записи WMI Writer

Средство записи WMI VSS writer используется для резервного копирования определенных состояний и данных WMI. Эти данные включают файлы из репозитория WBEM и требуют выполнения резервного копирования реестра.

Средство записи службы BITS

Это средство записи использует ключ реестра FilesNotToBackup для исключения файлов из каталога %allusersprofile%\application\data\microsoft\network\downloader.

Средство записи автоматического восстановления системы (ASR Writer)

Средство записи ASR Writer сохраняет конфигурацию дисков системы.

Средство записи System Writer

В Windows Vista средство записи System Writer создает список файлов, используя следующую формулу:

  1. Все установленные статические файлы. Эти файлы идентифицируются атрибутом writeabletype = "static " или writeabletype is "" в манифесте компонента. Сюда входят все файлы WRP. Кроме того, некоторые файлы, кроме файлов WRP, также могут быть помечены, как статические. Например, игры являются статическими, но не защищены WRP, и администраторы могут менять их родительские элементы управления.
  2. Папка WinSxS, в которой находятся все манифесты, дополнительные компоненты и файлы Win32 сторонних поставщиков.
  3. Все файлы PnP для установленных драйверов (для PnP).
  4. Все службы пользовательского режима и драйверы (не PNP).
  5. Все каталоги, управляемые CryptSvc.

Файлы в каталоге %windir%\system32 представляют собой закодированные ссылки на каталог winsxs.

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

Средство записи Microsoft Optimization Writer

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

Ссылки

Анализатор стандартных пользователей

Средство "Standard User Analyzer" (ранее носившее наименование "LUA Analyzer") предназначено для разработчиков ПО, IT-специалистов и пользователей, желающих провести диагностику приложения при его выполнении с правами стандартного пользователя. Анализатор Standard User Analyzer построено на базе технологии предикторов "LUA Predictor", входящей в состав средства Microsoft Application Verifier.

Требования к установке и совместимость

Операционные системы: Windows Vista, Windows XP и Windows Server 2003.

Примечание
В настоящее время поддерживается только 32-разрядная версия анализатора Standard User Analyzer.

Примечание
В настоящее время поддерживается только 32-разрядная версия анализатора Standard User Analyzer.

Требования к установке: Перед началом установки анализатора Standard User Analyzer должно быть установлено средство проверки Application Verifier. Инструмент Application Verifier можно бесплатно загрузить с веб-узла корпорации Майкрософт.

Установка

Для установки анализатора Standard User Analyzer необходимо запустить файл SUAnalyzer.msi. Все файлы инструмента Standard User Analyzer будут установлены в папку "Program Files\Standard User Analyzer".

Примечание
Для установки анализатора Standard User Analyzer требуется установка последней версии средства проверки Application Verifier.

Примечание
Для установки анализатора Standard User Analyzer требуется установка последней версии средства проверки Application Verifier.

Используйте анализатор Standard User Analyzer для диагностики стандартных проблем с совместимостью приложений

Примечание
Анализатор Standard User Analyzer следует запускать на компьютерах под управлением Windows Vista для правильного определения проблем с совместимостью приложения при работе с правами стандартного пользователя. Следующая процедура написана для выполнения стандартным пользователем на компьютере под управлением Windows Vista.

Примечание
Анализатор Standard User Analyzer следует запускать на компьютерах под управлением Windows Vista для правильного определения проблем с совместимостью приложения при работе с правами стандартного пользователя. Следующая процедура написана для выполнения стандартным пользователем на компьютере под управлением Windows Vista.

  1. Откройте в меню "Пуск" пункт "Все программы" и запустите Standard User Analyzer.
  2. На вкладке "Информация приложения" в поле "Приложение" введите путь к исполняемому файлу приложения или воспользуйтесь для его поиска кнопкой "Обзор".
  3. В поле "Параметры" на вкладке "Информация приложения" введите необходимые параметры приложения.
  4. На вкладке "Информация приложения" поставьте флажок в поле "Повысить права" и нажмите кнопку "Запустить".
  5. Если откроется диалоговое окно ввода учетных данных UAC для файла SUAnalyzerSrv.exe, введите учетные данные администратора и нажмите кнопку "Отправить".
  6. Если откроется диалоговое окно ввода учетных данных UAC для проверяемого приложения, введите учетные данные администратора и нажмите кнопку "Отправить".

Примечание
При выполнении данной процедуры процессу SUAnalyzerSrv.exe может потребоваться повышение привилегий. Этот процесс представляет собой инфраструктурный процесс, отвечающий за управление задачами, требующими уровень доступа администратора, например, изменением настроек Application Verifier.

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

Табл. 1. Интерпретация данных тестирования Standard User Analyzer

Вкладка Подробная информация
Файл Перечисляет проблемы доступа к файловой системе. Например, приложение может делать попытки совершить запись в файл, обычно доступный только для администраторов.
Реестр Перечисляет проблемы доступа к системному реестру. Например, приложение может делать попытки совершить запись ключа реестра в разделе HKLM, обычно доступном только для администраторов.
INI Перечисляет проблемы API WriteProfile. Прикладные интерфейсы WriteProfile API первоначально использовались для 16-разрядной версии Windows, но остаются популярными и в некоторых современных приложениях. В качестве примера можно привести приложение "Калькулятор" в Windows XP. Если изменить вид со "Стандартного" на "Инженерный", файл calc.exe вызовет API WriteProfile для выполнения записи в файл windows\win.ini, доступный только для пользователей с правами администратора.
Маркер Перечисляет проблемы с проверкой маркера доступа. Если приложение явно проверяет идентификатор безопасности (SID) "Builtin\Administrators" в маркере доступа пользователя, это приложение вероятнее всего не будет работать для стандартного пользователя.
Привилегия Перечисляет проблемы с привилегиями. Например, если приложение прямо поддерживает привилегию "SeDebugPrivilege", оно не будет работать для стандартного пользователя.
Пространство имен Перечисляет проблемы, возникающие, когда приложение создает системные объекты (т.е. события, карты памяти) в ограниченном пространстве имен. Приложения, в которых возникает эта ошибка, не работают для стандартных пользователей.
Другие объекты Перечисляет проблемы доступа к другим объектам, кроме файлов и ключей реестра.

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

Вкладка Подробная информация
Файл Перечисляет проблемы доступа к файловой системе. Например, приложение может делать попытки совершить запись в файл, обычно доступный только для администраторов.
Реестр Перечисляет проблемы доступа к системному реестру. Например, приложение может делать попытки совершить запись ключа реестра в разделе HKLM, обычно доступном только для администраторов.
INI Перечисляет проблемы API WriteProfile. Прикладные интерфейсы WriteProfile API первоначально использовались для 16-разрядной версии Windows, но остаются популярными и в некоторых современных приложениях. В качестве примера можно привести приложение "Калькулятор" в Windows XP. Если изменить вид со "Стандартного" на "Инженерный", файл calc.exe вызовет API WriteProfile для выполнения записи в файл windows\win.ini, доступный только для пользователей с правами администратора.
Маркер Перечисляет проблемы с проверкой маркера доступа. Если приложение явно проверяет идентификатор безопасности (SID) "Builtin\Administrators" в маркере доступа пользователя, это приложение вероятнее всего не будет работать для стандартного пользователя.
Привилегия Перечисляет проблемы с привилегиями. Например, если приложение прямо поддерживает привилегию "SeDebugPrivilege", оно не будет работать для стандартного пользователя.
Пространство имен Перечисляет проблемы, возникающие, когда приложение создает системные объекты (т.е. события, карты памяти) в ограниченном пространстве имен. Приложения, в которых возникает эта ошибка, не работают для стандартных пользователей.
Другие объекты Перечисляет проблемы доступа к другим объектам, кроме файлов и ключей реестра.

Главное меню анализатора Standard User Analyzer

Меню "Файл"

Открыть файл журнала: загрузка сохраненного файла журнала.

Экспортировать файл журнала: сохранение текущего файла журнала.

Просмотр неформатированного файла журнала: открытие текущего файла журнала в формате xml. (Внимание: если файл имеет большой размер, он будет долго открываться).

Выход: выход из программы.

Меню "Вид"

Здесь можно выбрать тип сообщений для отображения. Обычно просматриваются только "сообщения об ошибках".

Меню "Параметры"

Фильтровать записи: Скрытие/отображение нежелательных записей.

Загрузить файл фильтрации записей: Загрузка файла фильтрации записей.

Экспортировать файл фильтрации записей: Сохранение файла фильтрации записей.

Отображать только записи с названием приложения в поле StackTrace: При этом уменьшится число отображаемых нежелательных записей. Однако поскольку анализатор Standard User Analyzer проверяет только первые 32 кадра стека, при включении этой опции могут быть отфильтрованы реальные проблемы, если глубина стека вызова составляет более 32 кадров.

Ведение журнала: Настройки журнала. Рекомендуется не ставить флаг в поле "Информация", чтобы файл журнала не был слишком большим.

Поддержка механизма справки

Корпорация Майкрософт твердо намерена обеспечивать качество технологий справки и поддержки платформы Windows и будет и дальше рассматривать новые решения для разработчиков ПО. В этом документе приводится уточненная информация по поддержке четырех технологий справки в Microsoft Windows Vista: Windows Help, HTML Help 1.x, Центр справки и поддержки, и клиенту платформы Assistance Platform.

Формат Windows Help (WinHelp.exe & WinHlp32.exe)

Windows Help (WinHelp.exe и WinHlp32.exe) - оригинальный механизм справки Windows, начиная с версии Windows 3.1. Windows Help требуется для отображения файлов справки с расширением .HLP.

Формат Windows Help убран из Windows Vista. Справка Windows не поддерживается в версии Beta 2, в финальной версии удалена часть кода справки Windows. Для просмотра файлов справки с расширением .HLP в Windows Vista необходимо загрузить и установить файл WinHlp32.exe из Центра загрузки Майкрософт. Данный файл нельзя загрузить для версии Beta 2.

Корпорация Майкрософт настоятельно рекомендует разработчикам ПО прекратить использовать формат Windows Help в Vista. Разработчикам, программы которых используют файл .HLP, рекомендуется перевести справку в другой формат, например, CHM, HTML или XML. Также необходимо изменить структуру вызовов из WinHelp() API с учетом нового источника данных. Существует несколько средств сторонних производителей, которые могут помочь в преобразовании наполнения из одного формата в другой.

HTML Help 1.x (HH.exe)

Microsoft HTML Help 1.x (HH.exe) - справочная система, используемая в Windows, начиная с версии Windows 98. HTML Help требуется для отображения скомпилированных файлов справки с расширением .CHM.

HTML Help поддерживается в Windows Vista. Однако в механизм будут внесены лишь необходимые изменения. Никакие новые функции и улучшения в механизм HTML Help в Windows Vista и будущих версиях Windows добавляться не будут.

Более подробную информацию по формату HTML Help, а также рекомендации по созданию файлов в формат HTML Help, можно найти на веб-узле пакета Help 1.4 SDK (http://msdn2.microsoft.com/library/ms670169.aspx). (EN)

Центр справки и поддержки (HelpCtr.exe)

Центр справки и поддержки (HelpCtr.exe) представляет собой справочное приложение для Windows XP и Windows Server 2003. Центр справки и поддержки отображает скомпилированные файлы справки с расширением .CHM.

Центр справки и поддержки не входит в состав Windows Vista, и его функции не поддерживаются. Скомпилированные файлы справки с расширением .CHM отображаются только в справочном приложении HTML Help, как описано выше.

Клиент Assistance Platform (HelpPane.exe)

Клиент Assistance Platform (HelpPane.exe) представляет собой новый механизм справки для Windows Vista. Он не поддерживает предыдущие версии Windows. Клиент Assistance Platform необходим для отображения файлов справки для файлов с расширением .H1S.

ОЕМ-компании, системные интеграторы и корпоративные пользователи могут настраивать клиент Assistance Platform в Windows Vista по лицензионному соглашению. Другие программы не могут его использовать. Дополнительную информацию по настройке клиента Assistance Platform можно найти в пакете Windows SDK.

Дополнительная информация


Страница сайта http://test.interface.ru
Оригинал находится по адресу http://test.interface.ru/home.asp?artId=24113