Windows Server 2008 и совместимость приложений
←
→
Транскрипция содержимого страницы
Если ваш браузер не отображает страницу правильно, пожалуйста, читайте содержимое страницы ниже
Операционные системы Windows Vista и Windows Server 2008 представляют собой дальнейшее развитие семейства операционных систем компании Microsoft, включают набор новых технологий и служат платформой для создания широкого спектра прикладных решений. Для повышения безопасности и улучшения механизмов взаимодействия с пользователями, в Windows Vista и Windows Server 2008 появился ряд новинок и расширений и улучшений существующих компонентов. В большинстве случаев, Windows Vista и Windows Server 2008 обеспечивают высокий уровень совместимости с приложениями, написанными для операционных систем Microsoft Windows XP, Microsoft Windows Server 2003 с соответствующими пакетами обновлений, но тем не менее, ряд новых и измененных компонентов операционной системы может вызвать определенные проблемы при запуске и работе приложений. В данном обзоре мы обсудим наиболее часто встречающиеся проблемы с совместимостью существующих приложений с Windows Vista и Windows Server 2008. Прежде чем обратиться к подробному описанию возможных проблем, рекомендуется выполнить следующий простой тест, который покажет наличие или отсутствие потенциальных проблем, связанных с совместимостью с новыми версиями операционных систем: 1. На тестовом компьютере установите Windows Vista или Windows Server 2008 2. Установите приложение. Если будет показан запрос на подтверждение установки, выберите опцию Permit и установите приложение. Если приложение установилось успешно, перейдите к шагу 6 3. Если приложение не удалось установить и запрос на подтверждение установки не появился на экране, нажмите правую кнопку мыши на исполняемом файле инсталлятора, выберите опцию Run this program as administrator и повторите попытку установки приложения. Если приложение установилось успешно, перейдите к шагу 6 Примечание: Этот шаг не требуется, если приложение использует MSI- инсталлятор 4. Если в процессе установки приложения отображались сообщения об ошибках, например, связанных с версией операционной системы, регистрацией CLSID, копированием файлов, нажмите правую кнопку мыши на исполняемом файле инсталлятора, выберите опцию Properties, затем вкладку Compatibility и установите режим совместимости с Windows XP SP2 2
5. Вернитесь на шаг 2. Если вы не смогли установить приложение, перейдите к шагу 9. 6. Приложение должно быть установлено одним из описанных выше способов 7. Запустите приложение. Если приложение не запустилось как ожидалось или вы получили сообщения об ошибках, установите режим совместимости с Windows XP SP2 для исполняемого файла приложения и запустите приложение еще раз 8. Если приложение запустилось успешно, выполните полный набор тестов, которые вы обычно используете для тестирования приложения под Windows XP. Убедитесь в том, что приложение работает нормально и вся его функциональность доступна. Перейдите к шагу 10 9. Если приложение не удалось установить, успешно запустить, вы получили ошибки или сбои в процессе работы приложения, вам не удалось выполнить функциональные тесты, то обратитесь к рекомендациям, приведенным в данном обзоре 10. На этом тест на совместимость завершен Возможные категории несовместимостей можно разделить на три большие группы: безопасность, защищенные компоненты операционной системы и появление новых или удаление устаревших функций. Рис. Возможные категории несовместимостей В свою очередь, показанные выше категории несовместимостей можно разделить на две части – несовместимости, характерные как для Windows Vista и Windows Server 2008 и несовместимости, уникальные для Windows Server 2008. Начнем с группы 3
несовместимостей, которые могут вызвать проблемы при запуске приложений как под управлением клиентской операционной системы Windows Vista, так и серверной операционной системы Windows Server 2008. Несовместимости, характерные для Windows Vista и Windows Server 2008 Несовместимости, входящие в данную группу, в первую очередь связаны с новыми технологиями, реализованными в клиентской и серверной версии операционной системы Windows. К ним относятся – User Account Control (UAC), Windows Resource Protection (WRP), Mandatory Integrity Control (MIC), изменение номера версии операционной системы и изоляция сессии 0. Рис. Несовместимости, характерные для Windows Vista и Windows Server 2008 User Account Control (UAC) Принципиальный шаг в направлении повышения безопасности операционных систем семейства Windows – предоставление пользователям возможности работать под учетной записью " standard user", что дает им доступ к ограниченному набору разрешений и привилегий. По умолчанию, в Windows Vista и Windows Server 2008 все приложения выполняются под учетной записью "standard user", даже в тех случаях, когда пользователь является членом группы администраторов. При попытке запуска приложения, требующего привилегий администратора, система запрашивает подтверждения. Только приложения, выполняющиеся с административными привилегиями могут модифицировать системные и 4
глобальные настройки и влиять на поведение системы. Такая функциональность в Windows Vista и Windows Server 2008 называется User Account Control (UAC). Дополнительная информация: User Account Control in Windows Vista o http://go.microsoft.com/fwlink/?LinkId=62664 Getting Started with User Account Control o http://go.microsoft.com/fwlink/?LinkId=62669 Developer Best Practices and Guidelines for Applications in a Least Privileged Environment o http://msdn2.microsoft.com/en-us/library/aa480150.aspx UACBlog o http://go.microsoft.com/fwlink/?LinkId=62676 Windows Resource Protection (WRP) Для увеличения стабильности системы, ее надежности и предсказуемости поведения, механизм Windows Resource Protection (WRP) защищает систему Windows, поддерживая ее в режиме "только чтение". Эта функциональность распространяется на файлы ядра операционной системы, папки и ключи реестра. Обновления системных ресурсов возможны только приложениями, которые известны операционной системе (OS trusted installers), такими, как, например, Windows Servicing. Такая защита позволяет максимально защитить компоненты и приложения, входящие в состав операционной системы, от возможных воздействий со стороны других приложений и администраторов. Для того, чтобы определить, защищен ли файл механизмом Windows Resource Protection, можно выполнить следующие действия: 1. Из кода, используя функцию SfcIsFileProtected() 2. В Explorer проверить свойства файла o Открыть папку, в которой находится файл, свойства которого нас интересуют o Нажать правую кнопку мыши на интересующем нас файле и выбрать Properties. o Файл, который защищен механизмом WRP, покажет что режим Full Control доступен только для учетной записи Trusted Installer. Для учетных записей SYSTEM, Administrators и Users доступен только режим Read 5
Для того, чтобы определить, защищен ли элемент реестра механизмом Windows Resource Protection, можно выполнить следующие действия: 3. Из кода, используя функцию SfcIsKeyProtected() 4. В Registry Editor проверить свойства файла o Нажать правую кнопку мыши на интересующем нас элементе реестра и выбрать Properties. o Элемент, который защищен механизмом WRP, покажет что режим Full Control доступен только для учетной записи Trusted Installer. Для учетных записей SYSTEM, Administrators и Users доступен только режим Read Mandatory Integrity Control (MIC) В качестве дополнительного уровня защиты от вредоносного программного обеспечения в Windows Vista и Windows Server 2008 различные приложения могут работать под одним из трех уровней привилегий (High, Medium и Low). Приложения могут взаимодействовать с другими приложениями, выполняющимися с тем же или более низким уровнем привилегий, но не могут модифицировать или взаимодействовать с приложениями, выполняющимися с более высоким уровнем привилегий. В большинстве случаев приложения выполняются с уровнем привилегий Medium, а приложения, требующие наличия прав администратора – с более высокими привилегиями. Процессы с ограниченными возможностями, например, код внутри Internet Explorer, выполняются с минимальными привилегиями. Таким образом, приложения, выполняющиеся с низким уровнем привилегий, не могут посылать сообщения приложениям, выполняющимся с более высоким уровнем привилегий за исключением тех случаев, когда последние непосредственно не разрешили получение сообщений используя функцию ChangeWindowMessageFilter(). Точно также, приложения с низкими привилегиями, не могут модифицировать ссылки типа HWND, владельцами которых являются приложения с более высокими привилегиями. Для обеспечения совместимости, функция SendMessage() и ряд других функций для отсылки сообщений возвращают код успешного завершения даже если выполнение таких функций заблокировано из-за описанных выше проблем с уровнями привилегий. Изменение номера версии операционной системы Внутренний номер версии в операционных системах Windows Vista и Windows Server 2008 равен 6. При вызове функции GetVersion() возвращается именно этот номер. В 6
следующей таблице показаны номера версий ключевых операционных систем семейства Windows. ОС Windows Windows XP Windows Windows Windows 2000 Server 2003 Vista Server 2008 Версия 5.0 5.1 5.2 6.0 6.0 Для корректной проверки номера версии следует изменить код, чтобы выполнялась проверка >=6 и проверять не только версию операционной системы, но и ее издание, так как может оказаться, что требуемая для работы приложения функциональность, отсутствует в данном издании операционной системы. Для обеспечения совместимости приложений с новым номером версии без их переделки, следует использовать т.н. Version Lie Shim – Properties | Compatibility | Compatibility Mode. Рис. Version Lie Shim Версия браузера Internet Explorer, входящего в состав Windows Vista и Windows Server 2008 равна 7. Эта версия включена в строку User Agent, которая включается в заголовок каждого HTTP запроса. Изоляция сессии 0 В Windows XP, Windows Server 2003 и более ранних версиях операционной системы Windows, все сервисы выполнялись в одной сессии – в той сессии, которая создавалась для первого пользователя, подключившегося к консоли. Эта сессия называется Session 0. Выполнение сервисов и пользовательских приложений в одной сессии может приводить к 7
нарушению безопасности, так как сервисы выполняются с повышенными привилегиями и, таким образом, являются потенциальными жертвами для вредоносного кода. Рис. Потенциальные возможности для атаки в Windows XP В операционных системах Microsoft Windows Vista и Windows Server 2008 описанные выше возможности для атак со стороны вредоносного кода сведены к минимуму за счет то, что сервисы изолированы в сессии 0 и, таким образом, сессия в которой выполняются сервисы не является интерактивной. В Windows Vista и Windows Server 2008 только системные процессы и сервисы выполняются в сессии 0. Первый пользователь, который подключается к консоли, загружается с сессию 1, следующие пользователи – в сессии с увеличивающимися номерами. Это означает, что сервисы никогда не выполняются в той же сессии, что и пользовательские приложения и, таким образом, защищены от атак со стороны прикладного кода. 8
Рис. Сессии в Windows Vista и Windows Server 2008 Можно привести несколько примеров возможных несовместимостей. Например, в ряде случаев могут возникнуть проблемы с драйверами принтеров, которые загружаются сервисами спулера (spooler service), а также с драйверами, созданными с помощью User Mode Driver Framework (UMDF), так как такие драйвера располагаются в сессии 0. Помимо этого, могут возникнуть проблемы с сервисами, которые создают интерфейсные элементы, сервисами, которые пытаются использовать функции SendMessage() и PostMessage() для взаимодействия с приложениями, а также с приложениями, создающими объекты с глобальными именами. Дополнительная информация: Impact of Session 0 Isolation on Services and Drivers in Windows Vista o http://go.microsoft.com/fwlink/?LinkId=62691 Несовместимости, уникальные для Windows Server 2008 К несовместимостям, уникальным для серверной операционной системы Windows Server 2008, относятся: изменения в Active Directory, новые или измененные серверные роли, 9
компоненты системы (ряд стандартных приложений доступен в Desktop Experience Pack, отсутствуют файлы DirectX/Media, требуется установка .NET Framework 3.0 и ряд других не существенных изменений, которые в ряде случаев могут вызывать проблемы с функционированием некоторых приложений), новый тип установки операционной системы - Server Core, изменения в технологиях обеспечения отказоустойчивых кластеров (Failover Clustering) и новая функциональность в Windows Firewall. Рис. Несовместимости, уникальные для Windows Server 2008 Изменения в Active Directory В Windows Server 2008 Active Directory поддерживает унифицированную модель, которая может быть расширена разработчиками системных и прикладных решений. Эта модель предоставляет такие возможности, как: Единая архитектура и программная модель Администрирование контроллеров доменов Сервисы каталогов Управление правами Федерация сервисов Интеграция сервисов мета-каталогов (ILM) Доменные контроллеры только для чтения (Read-Only Domain Controllers) Для обеспечения унификации в наименовании компонентов Windows, относящихся к Active Directory, были внесены некоторые изменения в названия отдельных компонентов – они показаны в следующей таблице. 10
Старое название Новое название Active Directory Domain Controller Active Directory Domain Services Active Directory App mode Active Directory Lightweight Directory Services Windows Rights Management Services Active Directory Rights Management Services Windows Certificate Services Active Directory Certificate services Identity integration feature pack Active Directory Metadirectory Services Новый компонент Windows Server 2008 – доменный контроллер с возможностью только операций "чтение" (RODC) обеспечивает повышенную безопасность - пароли пользователей и компьютеров не реплицируются и не хранятся в таких доменных контроллерах, но поддерживается т.н. выборочное разрешение кэширования паролей. Помимо этого поддерживается однонаправленная репликация для AD и SYSVOL – используется атрибут Read Only Partial для отказа от репликации данных, но это требует дополнительной ручной настройки. Среди дополнительных характеристик доменных контроллеров с возможностью только операций "чтение" отметим поддержку разделения ключей Kerberos – каждый RODC имеет свою учетную запись KDC Krbtgt, ограниченные права записи в каталог (для учетных записей Workstation, не членов группы “enterprise domain controller” и не членов группы “domain domain controller”), упрощенность системы за счет поддержки однонаправленных репликаций, упрощенную настройку, учитывая тот факт, что большинство настроек включено по умолчанию. Также отметим, что администратор RODC может не быть администратором домена – это предотвращает случайные модификации домена администраторами компьютеров и тот факт, что поддерживается возможность делегирования установки и восстановления RODC. Примечательно, что RODC работает в существующей инфраструктуре – в большинстве случаев не требуется изменений для DC или клиентов. Для поддержки RODC требуется наличие режима Windows Server 2003 Forest Functional Mode или PDC FSMO на Windows Server 2008 и рекомендуется использовать несколько WS2K8 DC на один домен. Тем не менее, в ряде сценариев мы можем столкнуться с некоторыми проблемами, которые проявляются в том, что попытка записи в RODC либо вызывает ошибку при вызовах RPC и LDAP, либо приводит к долгим задержкам, появляющимся из-за ссылок на контроллер с возможностью записи. Для исправления таких проблем рекомендуется изменить дизайн топологии таким образом, чтобы функции записи не обращались к RODC. Дополнительная информация: Подробное описание возможных несовместимостей 11
o http://technet2.microsoft.com/windowsserver2008/en/library/ea8d253e- 0646-490c-93d3-b78c5e1d9db71033.mspx?mfr=true Windows Server 2008 Active Directory o http://www.microsoft.com/technet/technetmag/issues/2006/11/FutureOfWi ndows/default.aspx Новые или измененные серверные роли Операционная система Windows Server 2008 является полностью компонентизированной. Серверные роли в Windows Server 2008 полностью гранулированы и по умолчанию не активны. Серверные роли, которые были в предыдущих версиях Windows Server, имеют некоторые отличия, по сравнению с ролями Windows Server 2008. Таким образом, есть небольшая вероятность, что программы установки и приложения могут перестать работать, т.к. ожидаемые функции реализованы в новых или измененных ролях. Рис. Серверные роли в Windows Server 2008 12
Например, роли, представляющие наибольший интерес для компаний разработчиков - Web Server и Application Server были одной ролью в Windows Server 2003, а в новой версии сервера разделены на две – это показано на предыдущем рисунке. Для обнаружения и исправления возможных несоответствий и несовместимостей рекомендуется после миграции на новую операционную систему удалить и переустановить приложения, а также определить зависимости приложений от ролей и функций и включить соответствующие компоненты перед установкой приложения – это можно сделать либо средствами Server Manager, либо в пакетном режиме, используя, например, возможности предоставляемые Windows PowerShell. Рис. Ролевые сервисы в Windows Server 2008 Дополнительная информация: Руководство по Windows Server 2008 o http://www.microsoft.com/windowsserver/longhorn/prodguide.mspx Installing and Managing Roles 13
o http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032294712&Cu lture=en-US Server Core В Windows Server 2008 появился новый тип установки операционной системы, называемый Server Core. Server Core – это минимальная версия операционной системы Windows Server 2008, обеспечивающая серверную среду с минимальными требованиями по сопровождению и ограниченной функциональностью. Server Core обеспечивает реализацию ограниченного набора базовых ролей: DHCP DNS Active Directory Domain Controller (включая RODC) Active Directory LDS (ранее - ADAM) File Server, включая: o DFSR (ранее - FRS) o NFS o File quota Print Server Media Services Windows Virtualization IIS 7.0 (без поддержки ASP.NET и удаленного администрирования) и не поддерживает установку приложений – MSI поддерживается только в пакетном режиме. Помимо этого, не поддерживается функциональность на уровне Microsoft .NET (из- за этого, например, в роли Web Server нет поддержки ASP.NET), но разработчики могут создавать утилиты для управления сервером, дополнительные утилиты и сервисы, но только используя Native Windows API. В Server Core поддерживается следующая функциональность: WINS Failover Clustering Subsystem for UNIX-based applications Backup Multipath IO Removable Storage Management 14
Bitlocker Drive Encryption SNMP Telnet Client (S)NTP Для удаленного управления Server Core можно использовать: Terminal Server MMC для поддерживаемых компонентов и серверных ролей, например, Event Viewer и DNS WS-Management используя ShellExecute Определить наличие Server Core из командной строки можно следующей командой: C:\>WMIC path win32_operatingsystem get OperatingSystemSKU которая вернет одно из следующих значений: 12 для Datacenter Server Core Edition 13 для Standard Server Core Edition или 14 для Enterprise Server Core Edition Server Core входит в издания Standard, Enterprise и Datacenter и поддерживается на платформах x86 и x64. Дополнительная информация: Windows Server 2008 Server Core o http://msdn2.microsoft.com/en-us/library/ms723891.aspx Список DLL, включенных в состав Server Core o http://msdn2.microsoft.com/en-us/library/ms723876.aspx Failover Clustering В Windows Server 2008 поддержка отказоустойчивых кластеров претерпела ряд принципиальных изменений, что привело к появлению нового набора программных интерфейсов (CreateCluster(), DestroyCluster(), AddClusterNode(), EvictClusterNode(), SetClusterQuorumResource(), SetClusterResource DependencyExpression() и ряд других), улучшениям в функциональности, 15
масштабируемости и управляемости. К новым возможностям кластерных технологий можно отнести: Интегрированные средства проверки конфигурации Упрощенная установка кластера Упрощенное управление кластерами Расширения модель Quorum Поддержка Storage Area Networks Расширения в сетевой поддержке Расширения для Stretched Cluster Средства миграции кластеров Поддержка Server Core Основные изменения, которые могут привести к несовместимости приложений, связаны с использованием "старых" программных интерфейсов на базе Cluster Automation Server (MSClus) – они включены в состав Windows Server 2008, но поддерживаться не будут и должны использоваться только в сценариях, когда задействована только одна платформа: Windows Server 2003 -> Windows Server 2003 или Windows Server 2008 -> Windows Server 2008. Приложения, использующие MSClus, должны использовать Cluster API или провайдера Cluster WMI. Дополнительная информация: Cluster Automation Server o http://msdn2.microsoft.com/en-us/library/aa369077.aspx Failover Clustering in Windows Server 2008 o http://www.microsoft.com/windowsserver/longhorn/failover-clusters.mspx Server Cluster Provider o http://msdn2.microsoft.com/en-us/library/aa372876.aspx Volume Shadow Services o http://msdn2.microsoft.com/en-us/library/aa384961.aspx Windows Firewall В Windows Server 2008 опция Windows Firewall по умолчанию находится во включенном состоянии. Это означает, что для ряда приложений должны быть открыты используемые ими порты – в противном случае приложения не смогут работать. В качестве временного 16
решения возможных проблем можно отключить Windows Firewall, но это рекомендуется делать только в тех случаях, когда на компьютере установлен сетевой экран другого производителя. Рис. Windows Firewall в Server Manager Типичные симптомы несовместимости с включенным Windows Firewall – приложения перестают работать и в системном журнале появляются события аудита безопасности, указывающие на то, что приложение было заблокировано. Как мы отметили выше, для обеспечения функционирования приложений необходимо открыть соответствующие порты. Администраторы могут использовать контекст ‘netsh advfirewall’ для работы с правилами firewall из скриптов и шаблоны мастера Security Configuration для конфигурации серверов. Разработчики могут использовать программные интерфейсы INetFwPolicy2 (Firewall APIs) для интеграции инсталляторов с Windows Firewall и Advanced Security. Дополнительная информация: INetFwPolicy2 o http://msdn2.microsoft.com/en-us/library/aa365309.aspx Unattended Installation Settings Reference 17
o http://technet2.microsoft.com/WindowsVista/en/library/69eee519-55a6- 440d-ab94-56330ef57e291033.mspx Заключение В данном обзоре мы познакомились с наиболее часто встречающимися проблемами совместимости существующих приложений с Windows Vista и Windows Server 2008. Следование приведенным рекомендациям поможет вам минимизировать возможные проблемы. 18
Вы также можете почитать