Каковы основные различия между программированием для Windows XP и для Vista?
С точки зрения разработчика настольных приложений, есть ли разница между разработкой для Windows XP и разработкой для Windows Vista?
4 ответа
Пользовательский интерфейс
Изучив Руководство по взаимодействию с пользователем Windows Vista, вы увидите, что они изменили многие элементы пользовательского интерфейса, о которых вам следует знать. Некоторые важные вещи, на которые стоит обратить внимание:
- Большие иконки
- Новый шрифт (который влияет на некоторую согласованность пользовательского интерфейса)
- Новые возможности диалоговых окон ( диалоги задач)
- Измененные общие диалоги (например, "Открыть файл", "Сохранить как" и т. Д.)
- Стиль и тон текста диалога, а также внешний вид
- Новые Аэро Волшебники
- Переработанные панели инструментов
- Лучший интерфейс уведомлений
- Новый рекомендуемый метод включения управления поиском
- Стакан
64-битный
Vista имеет 64-битную версию, и, хотя XP тоже, то ваши пользователи с большей вероятностью будут использовать Vista 64, чем XP 64. Теперь вы должны иметь дело с:
- Виртуализация реестра
- Перенаправление реестра ( Wow6432Node)
- Реестр отражения
- Цифровые подписи для модулей ядра
- Установщики MSI имеют новые свойства для работы
UAC
Контроль учетных записей значительно влияет на разрешения по умолчанию, которые ваше приложение имеет при взаимодействии с ОС.
- Как UAC работает и влияет на ваше приложение (см. Также документ с требованиями)
- Установщики должны иметь дело с UAC
Новые API
Существуют новые API, которые предназначены либо для новых методов построения приложений, либо для предоставления новых функциональных возможностей:
- API криптографии: следующее поколение (CNG)
- Расширяемый язык разметки приложений (XAML)
- Windows Communication Foundation (WCF)
- Windows Workflow Foundation (WF)
- И еще много меньших
Монтажники
Поскольку при установке могут использоваться только общие среды выполнения, которые они устанавливают после завершения транзакции, настраиваемые действия завершатся неудачно, если ваша dll с настраиваемым действием требует среды выполнения Visual C++ выше VS 2005 CRT (не SP1).
Никогда не думайте, что у вашего пользователя есть доступ к определенным ключевым областям диска (например, программные файлы, каталог Windows и т. Д.). Вместо этого учетная запись пользователя по умолчанию сможет записывать только в небольшой раздел данных своего приложения. Кроме того, они не смогут писать в глобальные области реестра - только в текущий раздел пользователя.
Конечно, вы можете повысить их привилегии, но это само по себе является задачей.
Как правило, программирование для Vista такое же, как и для XP, это просто новые ограничения учетной записи, с которыми вам следует опасаться.
Ознакомьтесь с этой страницей, чтобы сделать ваше приложение "осведомленным в UAC"
http://www.codeproject.com/KB/vista-security/MakingAppsUACAware.aspx
Может быть, но это сознательный выбор, который вы делаете как разработчик. Вы можете использовать новые возможности Vista, такие как UAC и CommandLinks, Aero и так далее. Но вам не нужно (даже UAC может быть запрограммирован - просто не делайте ничего, что требует прав администратора). Если вы решите игнорировать все вещи Vista, то между ними нет абсолютно никакой разницы.
Если вы хотите включить этот материал в свое приложение, это имеет значение. Но я бы сказал, не огромный. И если вы абстрагируете различия (например, напишите свою собственную функцию, которая отображает TaskDialog для Vista, но которая уменьшает объем вводимых вами данных в MesssageBox на XP), то вы будете писать только против своего собственного кода, и различия будут казаться почти ничем.
Кроме того, много нового в Vista (например, UAC или Aero) - это то, о чем вы один раз беспокоитесь, когда создаете первый функционал, который его использует, заставляет работать, а потом больше никогда не думают, пока вы разработка приложения.
Безусловно, наиболее болезненной частью переноса приложения с XP на Vista (с моей точки зрения) является работа с многочисленными сервисами и вещами IPv6, использующими ранее свободные порты, и работа с переходом Wireless Provisioning -> Native WiFi.
UAC - это спорный вопрос; разработчик приложения должен сделать очень мало.