Windows operating systems compatibility

Understanding and Using Compatibility Fixes

Applies to

  • Windows 10
  • Windows 8.1
  • Windows 8
  • Windows 7
  • Windows Server 2012
  • Windows Server 2008 R2

As the Windows operating system evolves to support new technology and functionality, the implementations of some functions may change. This can cause problems for applications that relied upon the original implementation. You can avoid compatibility issues by using the Microsoft Windows Application Compatibility (Compatibility Fix) infrastructure to create a specific application fix for a particular version of an application.

How the Compatibility Fix Infrastructure Works

The Compatibility Fix infrastructure uses the linking ability of APIs to redirect an application from Windows code directly to alternative code that implements the compatibility fix.

The Windows Portable Executable File Format includes headers that contain the data directories that are used to provide a layer of indirection between the application and the linked file. API calls to the external binary files take place through the Import Address Table (IAT), which then directly calls the Windows operating system, as shown in the following figure.

Specifically, the process modifies the address of the affected Windows function in the IAT to point to the compatibility fix code, as shown in the following figure.

For statically linked DLLs, the code redirection occurs as the application loads. You can also fix dynamically linked DLLs by hooking into the GetProcAddress API.

Design Implications of the Compatibility Fix Infrastructure

There are important considerations to keep in mind when determining your application fix strategy, due to certain characteristics of the Compatibility Fix infrastructure.

The compatibility fix is not part of the Windows operating system (as shown in the previous figure). Therefore, the same security restrictions apply to the compatibility fix as apply to the application code, which means that you cannot use compatibility fixes to bypass any of the security mechanisms of the operating system. Therefore, compatibility fixes do not increase your security exposure, nor do you need to lower your security settings to accommodate compatibility fixes.

The Compatibility Fix infrastructure injects additional code into the application before it calls the operating system. This means that any remedy that can be accomplished by a compatibility fix can also be addressed by fixing the application code.

The compatibility fixes run as user-mode code inside of a user-mode application process. This means that you cannot use a compatibility fix to fix kernel-mode code issues. For example, you cannot use a compatibility fix to resolve device-driver issues.

Some antivirus, firewall, and anti-spyware code runs in kernel mode.

Determining When to Use a Compatibility Fix

The decision to use compatibility fixes to remedy your compatibility issues may involve more than just technical issues. The following scenarios reflect other common reasons for using a compatibility fix.

Scenario 1

The compatibility issue exists on an application which is no longer supported by the vendor.

As in many companies, you may run applications for which the vendor has ended support. In this situation, you cannot have the vendor make the fix, nor can you access the source code to modify the issue yourself. However, it is possible that the use of a compatibility fix might resolve the compatibility issue.

Scenario 2

The compatibility issue exists on an internally created application.

Читайте также:  Zte 626 драйвер windows 10

While it is preferable to fix the application code to resolve the issue, this is not always possible. Your internal team might not be able to fix all of the issues prior to the deployment of the new operating system. Instead, they might choose to employ a compatibility fix anywhere that it is possible. They can then fix the code only for issues that cannot be resolved in this manner. Through this method, your team can modify the application as time permits, without delaying the deployment of the new operating system into your environment.

Scenario 3

The compatibility issue exists on an application for which a compatible version is to be released in the near future, or an application that is not critical to the organization, regardless of its version.

In the situation where an application is either unimportant to your organization, or for which a newer, compatible version is to be released shortly, you can use a compatibility fix as a temporary solution. This means that you can continue to use the application without delaying the deployment of a new operating system, with the intention of updating your configuration as soon as the new version is released.

Determining Which Version of an Application to Fix

You can apply a compatibility fix to a particular version of an application, either by using the «up to or including» clause or by selecting that specific version. This means that the next version of the application will not have the compatibility fix automatically applied. This is important, because it allows you to continue to use your application, but it also encourages the vendor to fix the application.

Support for Compatibility Fixes

Compatibility fixes are shipped as part of the Windows operating system and are updated by using Windows Update. Therefore, they receive the same level of support as Windows itself.

You can apply the compatibility fixes to any of your applications. However, Microsoft does not provide the tools to use the Compatibility Fix infrastructure to create your own custom fixes.

Общие сведения об исправлениях совместимости и их использовании Understanding and Using Compatibility Fixes

Область применения Applies to

  • Windows 10 Windows 10
  • Windows 8.1 Windows 8.1
  • Windows 8 Windows 8
  • Windows7 Windows 7
  • Windows Server 2012 Windows Server 2012
  • Windows Server2008R2 Windows Server 2008 R2

По мере развития операционной системы Windows поддержки новых технологий и функций может измениться реализация некоторых функций. As the Windows operating system evolves to support new technology and functionality, the implementations of some functions may change. Это может привести к проблемам с приложениями, которые основываются на исходной реализации. This can cause problems for applications that relied upon the original implementation. Вы можете избежать проблем с совместимостью с помощью инфраструктуры совместимости приложений Microsoft Windows (исправление совместимости) для создания исправления для определенной версии приложения. You can avoid compatibility issues by using the Microsoft Windows Application Compatibility (Compatibility Fix) infrastructure to create a specific application fix for a particular version of an application.

Принцип работы инфраструктуры исправления совместимости How the Compatibility Fix Infrastructure Works

Инфраструктура исправления совместимости использует возможности связывания API для перенаправления приложения из кода Windows непосредственно в альтернативный код, реализующий исправление совместимости. The Compatibility Fix infrastructure uses the linking ability of APIs to redirect an application from Windows code directly to alternative code that implements the compatibility fix.

В формате переносимого исполняемого файла Windows есть заголовки, содержащие каталоги данных, которые используются для обеспечения уровня косвенного переключения между приложением и связанным файлом. The Windows Portable Executable File Format includes headers that contain the data directories that are used to provide a layer of indirection between the application and the linked file. Вызовы API внешних двоичных файлов находятся в таблице адресов импорта (IAT), которая затем напрямую вызывает операционную систему Windows, как показано на приведенном ниже рисунке. API calls to the external binary files take place through the Import Address Table (IAT), which then directly calls the Windows operating system, as shown in the following figure.

Читайте также:  Routing network with linux

В частности, процесс изменяет адрес уязвимой функции Windows в IAT таким образом, чтобы она указывала на код исправления совместимости, как показано на приведенном ниже рисунке. Specifically, the process modifies the address of the affected Windows function in the IAT to point to the compatibility fix code, as shown in the following figure.

Для статических связанных DLL перенаправление кода происходит при загрузке приложения. For statically linked DLLs, the code redirection occurs as the application loads. Кроме того, вы можете исправить динамически связываемые DLL-библиотеки, подключая функцию GetProcAddress API. You can also fix dynamically linked DLLs by hooking into the GetProcAddress API.

Влияние инфраструктуры исправления совместимости на проектирование Design Implications of the Compatibility Fix Infrastructure

При определении стратегии исправления приложения необходимо учитывать важные моменты в соответствии с определенными характеристиками инфраструктуры исправления совместимости. There are important considerations to keep in mind when determining your application fix strategy, due to certain characteristics of the Compatibility Fix infrastructure.

Исправление совместимости не является частью операционной системы Windows (как показано на предыдущем рисунке). The compatibility fix is not part of the Windows operating system (as shown in the previous figure). Следовательно, те же ограничения безопасности применяются к исправлению совместимости, которое применимо к коду приложения, что означает, что вы не можете использовать исправления совместимости для обхода каких либо механизмов безопасности операционной системы. Therefore, the same security restrictions apply to the compatibility fix as apply to the application code, which means that you cannot use compatibility fixes to bypass any of the security mechanisms of the operating system. Таким образом, исправления совместимости не увеличивают уровень безопасности, и вам не нужно понижать параметры безопасности для обеспечения исправлений совместимости. Therefore, compatibility fixes do not increase your security exposure, nor do you need to lower your security settings to accommodate compatibility fixes.

Инфраструктура исправления совместимости внедряет в приложение дополнительный код, прежде чем он будет вызывать операционную систему. The Compatibility Fix infrastructure injects additional code into the application before it calls the operating system. Это означает, что любое решение, которое может быть выполнено исправлением совместимости, также можно решить путем исправления кода приложения. This means that any remedy that can be accomplished by a compatibility fix can also be addressed by fixing the application code.

Исправления совместимости выполняются как код пользовательского режима внутри процесса приложения в пользовательском режиме. The compatibility fixes run as user-mode code inside of a user-mode application process. Это означает, что вы не можете использовать исправление совместимости для устранения проблем с кодом в режиме ядра. This means that you cannot use a compatibility fix to fix kernel-mode code issues. Например, нельзя использовать исправление совместимости для устранения проблем с драйверами устройств. For example, you cannot use a compatibility fix to resolve device-driver issues.

Некоторые антивирусные программы, брандмауэры и вредоносные программы работают в режиме ядра. Some antivirus, firewall, and anti-spyware code runs in kernel mode.

Определение того, когда следует использовать исправление совместимости Determining When to Use a Compatibility Fix

Решение о том, как использовать исправления совместимости для устранения проблем с совместимостью, может потребовать больше, чем просто технические проблемы. The decision to use compatibility fixes to remedy your compatibility issues may involve more than just technical issues. Следующие сценарии отражают другие распространенные причины использования исправления совместимости. The following scenarios reflect other common reasons for using a compatibility fix.

Сценарий 1 Scenario 1

В приложении, которое больше не поддерживается поставщиком, существует ошибка совместимости. The compatibility issue exists on an application which is no longer supported by the vendor.

Как и во многих компаниях, вы можете запускать приложения, для которых поставщик завершил поддержку. As in many companies, you may run applications for which the vendor has ended support. В этом случае поставщик не может внести в него исправления, и вы не можете получить доступ к исходному коду для самостоятельного изменения проблемы. In this situation, you cannot have the vendor make the fix, nor can you access the source code to modify the issue yourself. Однако возможно, что использование исправления совместимости может решить проблему совместимости. However, it is possible that the use of a compatibility fix might resolve the compatibility issue.

Читайте также:  Compile qt5 on windows

Сценарий 2 Scenario 2

В приложении, созданном внутренним приложением, существует ошибка совместимости. The compatibility issue exists on an internally created application.

Для устранения проблемы предпочтительнее исправить код приложения, но это не всегда возможно. While it is preferable to fix the application code to resolve the issue, this is not always possible. Возможно, ваша внутренняя группа не может решить все проблемы до развертывания новой операционной системы. Your internal team might not be able to fix all of the issues prior to the deployment of the new operating system. Вместо этого они могут использовать исправление совместимости везде, где это возможно. Instead, they might choose to employ a compatibility fix anywhere that it is possible. Затем они смогут исправить этот код только для проблем, которые невозможно устранить таким образом. They can then fix the code only for issues that cannot be resolved in this manner. С помощью этого метода ваша команда может изменить приложение так, как можно допустить время, не откладывая развертывание новой операционной системы в вашу среду. Through this method, your team can modify the application as time permits, without delaying the deployment of the new operating system into your environment.

Сценарий 3 Scenario 3

В приложении, для которого должна быть выпущена совместимая версия в ближайшем будущем, или в приложении, которое не является критическим для организации независимо от ее версии, существует ошибка совместимости. The compatibility issue exists on an application for which a compatible version is to be released in the near future, or an application that is not critical to the organization, regardless of its version.

В ситуации, когда приложение не имеет значения для вашей организации, или для более поздней версии, которая вскоре будет выпущена, вы можете использовать исправление совместимости в качестве временного решения. In the situation where an application is either unimportant to your organization, or for which a newer, compatible version is to be released shortly, you can use a compatibility fix as a temporary solution. Это означает, что вы можете продолжать использовать приложение, не откладывая развертывание новой операционной системы, предоставляя возможность обновлять конфигурацию, как только новая версия будет выпущена. This means that you can continue to use the application without delaying the deployment of a new operating system, with the intention of updating your configuration as soon as the new version is released.

Определение версии приложения для исправления Determining Which Version of an Application to Fix

Исправление совместимости можно применить к конкретной версии приложения с помощью предложения «до или после» или путем выбора конкретной версии. You can apply a compatibility fix to a particular version of an application, either by using the «up to or including» clause or by selecting that specific version. Это означает, что в следующей версии приложения не будет автоматически применено исправление совместимости. This means that the next version of the application will not have the compatibility fix automatically applied. Это важно, так как это позволяет продолжать пользоваться приложением, но оно также способствует тому, что поставщик может исправить это приложение. This is important, because it allows you to continue to use your application, but it also encourages the vendor to fix the application.

Поддержка проблем совместимости Support for Compatibility Fixes

Исправления совместимости отгружаются в составе операционной системы Windows и обновляются с помощью центра обновления Windows. Compatibility fixes are shipped as part of the Windows operating system and are updated by using Windows Update. Таким образом, они получают тот же уровень поддержки, что и Windows. Therefore, they receive the same level of support as Windows itself.

Исправления совместимости можно применить к любому приложению. You can apply the compatibility fixes to any of your applications. Тем не менее, корпорация Майкрософт не предоставляет средства для использования инфраструктуры исправлений совместимости для создания собственных настраиваемых исправлений. However, Microsoft does not provide the tools to use the Compatibility Fix infrastructure to create your own custom fixes.

Оцените статью