Windows Vista, Windows Server 2008 и Windows 7 User Account Control (UAC) Windows Resource Protection (WRP) Версия операционной системы Mandatory Integrity Control (MIC) Изоляция сессии 0 54% всех ошибок, связанных с совместимостью Внутренний номер версии в Windows Vista/Server 2008/Windows 7 (функция GetVersion) = 6 Версия Windows 2000 Windows XP Windows Server 2003 Windows Vista Windows Server 2008 Windows 7 5.0 5.1 5.2 6.0 6.0 6.1 Версия Internet Explorer - 7.0/8.0 Версия включена в строку User Agent Строка User Agent включается в заголовок каждого HTTP запроса Измените код – нужна проверка типа >= 6 GetVersionEx() Операционная система подвергается существенным рискам когда пользователь работает под учетной записью Administrator Более простая установка вредоносного кода Возможность повышения привилегий Открытость для вредоносного кода Случайные повреждения, вносимые пользователем Запрещены обновления защищенных ресурсов Только программы установки, известные ОС (Windows Update) ACL для ресурсов Распространяется на файлы, папки и ключи реестра Большинство ключевых модулей ОС (EXE и DLL) Большинство ключей реестра (HKCR) Папки, используемые ресурсами ОС Проверка SfcIsFileProtected() - файлы SfcIsKeyProtected() – ключи реестра Реализовано в Windows Vista, Windows Server 2008 и Windows 7 Процессы выполняются на одном из четырех уровней целостности (Integrity Levels): Системные процессы - System IL Приложения с привилегиями администратора - High IL Стандартные приложения - Medium IL Приложения с ограничениями - Low IL Защищаемые объекты (файлы, процессы, очереди сообщений и т.п.) задают минимальный уровенб процесса для доступа к ним Уровень для объектов по умолчанию: Medium UI Privilege Isolation (UIPI) Использует MIC для запрета посылки сообщений между окнами Приложения не могут посылать сообщения приложениям, выполняющися с более высоким IL Приложения с более высоким IL могут разрешить прием сообщений SendMessage() не возвращает ошибок Исправление: функция ChangeWindowsMessageFilter() Выполнение системных сервисов и пользовательских приложений в сессии 0 может привести к нарушению безопасности Потенциальная возможность обмена между сервисами и приложениями Потенциальная возможность повышения привилегий Выполнение сервисов и приложений в различных сессиях существенно снижает возможность атак, повышает стабильность, надежность и защищенность системы Windows Vista, Windows Server 2008 и Windows 7 User Account Control (UAC) Windows Resource Protection (WRP) Версия операционной системы Mandatory Integrity Control (MIC) Изоляция сессии 0 Обрезанный текст Размеры картинок и расположение элементов Расположение элементов Размытые картинки Размытый текст Неправильные размеры шрифтов Появилась в Vista Применяется для приложений, которые не указали явно DPI awareness Через манифест или вызов SetProcessDPIAware() Подсистема Win32 возвращает метрики как будто установлен 96 DPI (вызовы GetSystemMetrics(), GetDeviceCaps, DEFAULT_GUI_FONT, и т. п.) DWM масштабирует окно приложения DPI Virtualization — это временное решение Если приложение работает под Windows Vista, оно будет работать и под Windows 7, но есть нюансы... Версия операционной системы Версия Internet Explorer Библиотеки (File Libraries) Windows Mail Новые компоненты системного уровня IE DEP Windows Server 64 Bit WOW64 on Windows Core Без режима совместимости: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0) С режимом совместимости: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0) По умолчанию для общих диалоговых панелей: Documents Library Библиотеки – это файлы (а не папки) IFileDialog->GetFolder() + IFileDialog->GetFilename() не корректно работают с библиотеками GetFolder() возвращает файл Исправление Используйте IFileDialog->GetResult() Отсутствующий компонент – заменен на Windows Live Mail или почтовый клиент по выбору Все API работают, за исключением API, отображающих интерфейсы Обработчики протоколов и файлов не зарегистрированы Исправления Не использовать вызовы устаревших API Установить почтовый клиент Реорганизация компонентов системы Пример: функциональность из kernel32.dll и advapi32.dll перенесена в kernelbase.dll Экпортированные функции перенаправляются в соответствующие библиотеки Приложения, использующие внутренние функции и структуры могут не работать Data Execution Prevention (NX) – опция включена по умолчанию Плагины, которые не совместимы с DEP, могут привести к краху браузера Исправления: Используйте DEP-совместимые библиотеки (ATL) Используйте опцию компоновщика /NXCOMPAT Драйвера Перенос и подписание 64-битных драйверов 32-битный код Должен работать под WOW64 IsWow64Process 32-битные плагины Перенос на 64-бита для 64-битных процессов 16-битный код Перенос на 32- или 64-бита По умолчанию 32-битный код работать не будет Исправления: Перенос на 64-бита Установка компонента WOW64 Секция Compatibility в манифесте приложения – указание на ОС, для которой создано приложение Windows SxS Нет секции Compatibility == совместимость с Vista <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> <compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1"> <application> <!-- Windows 7 supported --> <supportedOS Id="{35138b9a-5d96-4fbd-8e2da2440225f93a}"/> </application> </compatibility> </assembly> Problem Step Recorder %windir%\system32\psr.exe Позволяет выполнить пошаговую запись возникновения проблемы Создает zip-файл с mht-файлом Интеграция с Watson Windows Troubleshooting Встроенные средства решения проблем Доступ через Action Center Control Panel | All Items | Action Center | Troubleshooting Расширяемость Windows SDK: TSPBuilder.exe Скрипт на PowerShell