Partager via


Windows 7: Модернизация приложений. Часть 1

Сегодня, на московском форуме “Microsoft Innovation Day” мы начали обсуждать тему использования Windows 7 как платформы для работы приложений. Приведенные ниже заметки могут оказаться полезными как тем, кто посетил данное мероприятие (или мероприятия в других городах, которые пройдет в октябре-декабре этого года, расписание см. здесь ), так и тем, кто интересуется вопросами использования WIndows 7 для разработки приложений.

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

  • Совместимость
  • Стабильность
  • Функциональность

image

Совместимость

Группа «Совместимость» включает в себя действия по обеспечению работоспособности приложений при переносе их с Windows XP на Windows Vista и Windows 7, или, минуя Windows Vista, с Windows XP на Windows 7. Здесь также следует упомянуть и необходимость решения такой задачи, как «Преемственность» - т.е. обеспечение работоспособности приложений на всех существующих версиях операционной системы - Windows XP, Windows Vista и Windows 7.

Очень кратко, ключевые вопросы совместимости сводятся к:

  • Проверке версии ОС
    • Рекомендуется не проверять версию ОС без реальной необходимости
    • Проверяйте издание операционной системы и включенные компоненты/сервисы
    • Для проверки наличия/отсутствия определенных программных интерфейсов используйте соответствующие функции Windows API – LoadLibrary(), GetProcAddress()
  • Работе под учетной записью «Standard User»
    • Проверяйте полную работоспособность приложения под учетной записью «Standard User»
    • В случае необходимости в выполнении привилегированных операций, выносите эту функциональность в отдельный модуль, запускаемый с соответствующими опциями в манифесте приложения
    • Для взаимодействия между модулями приложения используйте файлы, располагаемые в памяти, механизмы RPC или другие документированные функции
  • Записи в рекомендованные папки/ветви реестра
    • Для хранения данных пользователей, используйте профиль пользователя
    • Для хранения общих данных – документированные папки
    • Используйте только известные системе папки – через функцию GetKnownFolder() или ее эквиваленты
  • Использованию манифеста
    • Помните, что манифест приложения, переводит приложение для Windows XP в приложение для Windows Vista – для приложений с манифестом, в котором указаны блоки, характерные для Windows Vista, отключаются механизмы перенаправления действий с файловой системой и реестром, что может привести к появлению ошибок при работе приложения
  • Интерактивным сервисам
    • Интерактивные сервисы, запускаемые в Сессии 0, не поддерживаются в Windows Vista и Windows 7
    • При необходимости создания интерактивных сервисов, используйте отдельные интерфейсные модули, с которыми сервисы общаются документированными способами

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

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

Продолжение следует...

АФ