Share via


Grundlegendes zu Kompatibilitätspatches und Verwendung von Kompatibilitätspatches

Funktionsweise der Kompatibilitätspatch-Infrastruktur

Durch die Weiterentwicklung des Windows®-Betriebssystems und die damit verbundene Unterstützung neuer Technologien und Funktionen ändert sich unter Umständen auch die Implementierung einiger Funktionen. Dies kann zu Problemen mit Apps führen, die auf der ursprünglichen Implementierung basieren. Kompatibilitätsprobleme lassen sich vermeiden, indem Sie mit der App-Kompatibilitätsinfrastruktur von Microsoft Windows (bzw. mit der Kompatibilitätspatch-Infrastruktur) einen speziellen Kompatibilitätspatch für eine bestimmte Version einer App erstellen. Die Kompatibilitätspatch-Infrastruktur nutzt die Verknüpfungsfunktion von APIs, um eine App vom Windows-Code direkt zu alternativem Code umzuleiten, der den Kompatibilitätspatch implementiert.

Das Windows-Format für portierbare ausführbare Dateien enthält Header mit den Datenverzeichnissen, die verwendet werden, um eine Dereferenzierungsschicht zwischen der App und der verknüpften Datei bereitzustellen. API-Aufrufe der externen Binärdateien erfolgen über die Importadresstabelle (Import Address Table, IAT), die dann direkt das Windows-Betriebssystem aufruft (siehe folgende Abbildung).

ACT: Betriebssystemaufruf durch die App mittels IAT

Genauer gesagt ändert der Prozess die Adresse der betroffenen Windows-Funktion in der IAT, um auf den Code des Kompatibilitätspatchs zu verweisen, wie in der folgenden Abbildung zu sehen.

ACT: Anwendungsumleitung mit Kompatibilitätspatch

Hinweis

Bei DLLs mit statischer Verknüpfung erfolgt die Codeumleitung, wenn die App geladen wird. Sie können auch DLLs mit dynamischer Verknüpfung reparieren. Verwenden Sie hierzu einen Hook in der GetProcAddress-API.

Auswirkungen der Kompatibilitätspatch-Infrastruktur auf das Design

Aufgrund bestimmter Merkmale der Kompatibilitätspatch-Infrastruktur sind bei der Planung der Patchstrategie für Apps einige wichtige Aspekte zu berücksichtigen.

  • Wie in der vorherigen Abbildung zu sehen, ist der Kompatibilitätspatch nicht Teil des Windows-Betriebssystems. Für den Kompatibilitätspatch gelten daher die gleichen Sicherheitseinschränkungen wie für den App-Code. Das bedeutet, Sie können Kompatibilitätspatches nicht zum Umgehen der Sicherheitsmechanismen des Betriebssystems verwenden. Kompatibilitätspatches senken also weder Ihr Sicherheitsrisiko, noch müssen Sie Ihre Sicherheitseinstellungen verringern, um Kompatibilitätspatches verwenden zu können.

  • Die Kompatibilitätspatch-Infrastruktur fügt zusätzlichen Code in die App ein, bevor das Betriebssystem aufgerufen wird. Jede Abhilfe, die durch einen Kompatibilitätspatch geschaffen wird, kann also auch durch eine Korrektur des App-Codes erreicht werden.

  • Die Kompatibilitätspatches werden als Benutzermoduscode innerhalb eines App-Prozesses im Benutzermodus ausgeführt. Mit einem Kompatibilitätspatch lassen sich also keine Codeprobleme im Kernelmodus korrigieren. So können Sie mit einem Kompatibilitätspatch beispielsweise keine Gerätetreiberprobleme beheben.

    Hinweis

    Teile des Codes von Antiviren-, Firewall- und Antispyware-Apps werden beispielsweise im Kernelmodus ausgeführt.

Abwägen der Verwendung eines Kompatibilitätspatchs

Bei der Entscheidung, Kompatibilitätsprobleme mit Kompatibilitätspatches zu beheben, sind unter Umständen nicht nur technische Aspekte ausschlaggebend. Die folgenden Szenarien enthalten weitere mögliche Gründe für den Einsatz eines Kompatibilitätspatchs.

Szenario 1

Das Kompatibilitätsproblem betrifft eine App, für die der Anbieter keinen Support mehr bereitstellt.

Genau wie viele andere Unternehmen verwendet möglicherweise auch Ihr Unternehmen Apps, für die der Anbieter den Support eingestellt hat. In diesem Fall können Sie weder einen Patch des Anbieters erwarten noch auf den Quellcode zugreifen und das Problem selbst beheben. Möglicherweise lässt sich das Kompatibilitätsproblem aber mithilfe eines Kompatibilitätspatchs in den Griff bekommen.

Szenario 2

Das Kompatibilitätsproblem betrifft eine intern erstellte App.

Nun wäre es zwar wünschenswert, das Problem durch eine Korrektur des App-Codes zu beheben, dies ist aber nicht immer möglich. Ihr internes Team schafft es möglicherweise nicht, alle Probleme vor der Bereitstellung des neuen Betriebssystems zu lösen. In diesem Fall kann das Team überall dort, wo dies möglich ist, auf einen Kompatibilitätspatch zurückgreifen. Dadurch kann sich das Team auf die Korrektur des Codes für die Probleme konzentrieren, die sich nicht auf diese Weise lösen lassen. Dank dieser Methode kann das Team die App im zur Verfügung stehenden Zeitrahmen ändern, ohne dass die Bereitstellung des neuen Betriebssystems in Ihrer Umgebung verschoben werden muss.

Szenario 3

Das Kompatibilitätsproblem betrifft eine App, für die demnächst eine kompatible Version veröffentlicht wird, oder eine App, die für die Organisation nicht so wichtig ist (unabhängig von ihrer Version).

Falls eine App für die Organisation nicht so wichtig ist oder in Kürze eine neuere, kompatible Version der App veröffentlicht wird, können Sie einen Kompatibilitätspatch als Übergangslösung verwenden. Das bedeutet, Sie können die App weiterhin nutzen, ohne die Bereitstellung eines neuen Betriebssystems zu verschieben, und die Konfiguration aktualisieren, sobald die neue Version veröffentlicht wird.

Entscheiden, welche Version einer App repariert werden soll

Sie können einen Kompatibilitätspatch auf eine bestimmte Version einer App anwenden. Hierzu verwenden Sie entweder die Klausel „up to or including“ oder wählen die gewünschte Version aus. In diesem Fall wird der Kompatibilitätspatch nicht automatisch auf die nächste Version der App angewendet. Dies ist wichtig, da Sie die App weiterhin verwenden können und der Anbieter außerdem dazu angespornt wird, die Probleme mit der App zu beheben.

Support für Kompatibilitätspatches

Kompatibilitätspatches werden als Teil des Windows-Betriebssystems ausgeliefert und per Windows Update aktualisiert. Daher erhalten sie den gleichen Support wie Windows selbst.

Kompatibilitätspatches können Sie auf jede Ihrer Apps anwenden. Microsoft stellt aber keine Tools bereit, mit denen Sie eigene benutzerdefinierte Patches unter Verwendung der Kompatibilitätspatch-Infrastruktur erstellen können.

Siehe auch

Weitere Ressourcen

Verwalten von App-Kompatibilitätspatches und benutzerdefinierten Patchdatenbanken