Skip to main content

Verwalten von Shims in einem Unternehmen

Wenn bei der Vorbereitung einer Bereitstellung von Windows Kompatibilitätsprobleme behandelt werden, stellen Anwendungskompatibilitätspatches, im Allgemeinen als Shims bezeichnet, mit die flexibelsten und leistungsfähigsten Tools dar. Viele Unternehmen nutzen Shims jedoch nicht in dem Umfang, wie es möglich wäre. Das liegt daran, dass ein Verständnis der zugrundeliegenden Technologie fehlt oder kein Prozess zum Verwalten von Shims während der restlichen Lebensdauer der Anwendungen vorhanden ist, die sie warten sollen.

In diesem Artikel werden bewährte Methoden zum Lösen von Anwendungskompatibilitätsproblemen mithilfe von Shims beleuchtet. Die Funktionsweise von Shims, die Anwendungsbereiche von Shims und die Verwaltung der angewendeten Shims werden genau geschildert.

In diesem Artikel:


Grundlagen von Shims

Funktionsweise von Shims

Anwendungskompatibilität in Microsoft Windows-Betriebssystemen stellt neben Leistung, Zuverlässigkeit und Verwaltbarkeit eine der Grundvoraussetzungen für die Entwicklung dar. Zur Senkung der Bereitstellungskosten und zur Beschleunigung der Einführung investiert Microsoft in umfassende technische Lösungen, damit eine umfassende Kompatibilität der vorhandenen Software sichergestellt werden kann. Kompatibilität wird so schon bei der Entwicklung und Freigabe berücksichtigt.

Die Microsoft Windows-Anwendungskompatibilitätsinfrastruktur (Shiminfrastruktur) ist eine dieser leistungsstarken technischen Lösungen. Es findet eine Weiterentwicklung des Windows-Betriebssystems zur Unterstützung neuer Technologien, zur Einarbeitung von Korrekturen und/oder zur Implementierung einer Strategieänderung statt. Die damit einhergehenden Änderungen an der Implementierung einiger Windows-API-Funktionen (Application Programming Interface, Anwendungsprogrammierschnittstelle) wirken sich auf die Anwendungen aus, die sie verwenden. Da die Art und Weise der Abhängigkeiten von bestimmten Implementierungen stark variiert, kann möglicherweise nicht eine einzige Implementierung für die gesamte vorhandene Software erstellt und gleichzeitig das gewünschte neue Verhalten bereitgestellt werden. In der Vergangenheit wurden Kompatibilitätsprobleme gelöst, indem Verzweigungen im Quellcode für Windows platziert wurden. Diese Methode stellt jedoch im Hinblick auf die Wartbarkeit und Zuverlässigkeit des Windows-Betriebssystems langfristig eine Herausforderung dar. Das bedeutet auch, dass das Problem vor der Lieferung von Windows bekannt sein muss. Dies trifft sicherlich nicht immer auf Unternehmenssoftware zu. Mithilfe der Shiminfrastruktur können Sie jedoch einen bestimmten Anwendungsfix gezielt für eine bestimmte Anwendung einsetzen (üblicherweise auch für bestimmte Versionen der Anwendung). Diese Fixes befinden sich dann außerhalb der Windows-Kernfunktionen und werden gesondert verwaltet.

Mit der Shiminfrastruktur wird eine Form von API-Hooking (Application Programming Interface, Anwendungsprogrammierschnittstelle) implementiert. Dies bedeutet, dass die Implementierung dynamischer Verknüpfungen genutzt wird, um API-Aufrufe von Windows selbst an den alternativen Code, das Shim, weiterzuleiten. Die Windows-Spezifikation für portierbare ausführbare Dateien (Portable Executable, PE) und Common Object File Format (COFF) umfasst verschiedene Header, und die Datenverzeichnisse in diesen Headern bieten eine Dereferenzierungsebene zwischen der Anwendung und der verknüpften Datei. Aufrufe externer Binärdateien erfolgen über die Importadresstabelle (IAT). Folglich sieht in diesem System ein Aufruf für Windows wie in Abbildung 1 dargestellt aus.

Abbildung eines Aufrufs für Windows durch eine Anwendung über IAT
Abbildung 1: Aufruf von Windows durch eine Anwendung über IAT

Sie können die Adresse der in der Importtabelle aufgelösten Windows-Funktion ändern und dann durch einen Zeiger auf eine Funktion im alternativen Shimcode ersetzen, wie in Abbildung 2 dargestellt.

Abbildung einer Anwendung, die vor dem Windows-Aufruf an das Shim umgeleitet wird
Abbildung 2: Anwendung, die vor dem Windows-Aufruf an das Shim umgeleitet wird

Diese Dereferenzierung erfolgt für statisch verknüpfte DLL-Dateien, wenn die Anwendung mit Shims das erste Mal geladen wird. Unter Windows werden Shims auch für dynamisch verknüpfte DLL-Dateien verwendet, indem ein Hooking der GetProcAddress-API implementiert wird.

Entwurfsfolgen für die Shiminfrastruktur

Bestimmte Konsequenzen beim Entwurf der Shiminfrastruktur können bei der Bestimmung der Shimstrategie relevant sein.

Erstens befindet sich der in einem Shim ausgeführte Code weiterhin außerhalb von Windows. Siehe Abbildung 2. Folglich wendet Windows die gleichen Sicherheitsbeschränkungen auf den Shimcode an wie auf den Anwendungscode selbst. Tatsächlich erscheint für Windows der Shimcode wie Anwendungscode. Folglich können Sie mit Shims keine Sicherheitsmechanismen von Windows umgehen. Beispielsweise gibt es noch kein Shim, mit dem Aufforderungen der Benutzerkontensteuerung (User Account Control, UAC) umgangen werden können, wenn die Anwendung mit erhöhten Berechtigungen ausgeführt wird (eine häufige Anforderung von Unternehmenskunden, die zum ersten Mal mit Shims experimentieren, um Administratorrechte für weitere Benutzern zu entfernen). Sie können per Shim festlegen, dass für die Anwendung keine Administratorrechte erforderlich sind oder der Benutzer aufgefordert wird, Administratorrechte bereitzustellen. Allerdings muss der Benutzer der Erhöhung zustimmen, um die Administratorrechte mit aktivierter Benutzerkontensteuerung zu erhalten. Dies gilt auch für den Code, den Sie selbst schreiben.

Wenn Sie also die Folgen für die Sicherheit durch den Einsatz von Shims im Unternehmen bewerten, stellen Sie fest, dass keine zusätzlichen Sicherheitslücken geöffnet werden. Es kann sogar häufig die sichere Wahl sein, mit Shims die Lockerung von Sicherheitsbeschreibungen oder Sicherheitsrichtlinien zu vermeiden. Ohne Shims können Sie z. B. ein Kompatibilitätsproblem mindern, indem Sie die ACLs für ein bestimmtes Verzeichnis lockern. Diese Entscheidung hat jedoch Auswirkungen auf das gesamte System. Mit Shims können Sie den Dateizugriff für die Anwendung auf einen benutzerspezifischen Speicherort umleiten. Ein anderes Beispiel ist eine Anwendung, die explizit auf Administratorrechte prüft. Ohne Shims müssen Sie möglicherweise der Anwendung die Administratorrechte für die Überprüfung erteilen. Ist die Überprüfung nicht erforderlich, könnte ein Shim einfach vortäuschen, dass der aktuelle Benutzer über Administratorrechte verfügt. Die Überprüfung ist dann erfolgreich, ohne dass eine zusätzliche Angriffsfläche für die Sicherheit entsteht.

Da die Shiminfrastruktur im Wesentlichen zusätzlichen Code in die Anwendung einfügt, bevor Windows aufgerufen wird, kann jede Problemminderung, die mit einem Shim erreicht werden kann, durch eine Änderung des Anwendungscodes umgesetzt werden. Die Anwendung enthält dann möglicherweise Code, der dem ähnlich ist, den Windows direkt vor dem Aufruf der Windows-APIs im Shim implementiert. Folglich können Shims während der Fehlerbehebung sehr lehrreich sein, auch wenn sie das Problem nicht endgültig beheben.

Die Auswirkungen von Shims auf die Leistung sind je nach Aktion des Shims unterschiedlich. Betrachten wir ein paar Beispiele. In einer Versionstäuschung, die einfach vorgibt, eine frühere Version von Windows zu sein, wird etwa der gleiche Vorgang ausgeführt: Der Aufwand, den Wert 5.1 zurückzugeben, ist genauso groß wie der Aufwand für eine Rückgabe des Werts 6.2. Ein weiteres Beispiel: Das ForceAdminAccess-Shim wird erheblich schneller ausgeführt als die APIs, die es abfängt. Da immer ohne Anfordern einer Bestätigung davon ausgegangen wird, dass der Benutzer ein Administrator ist, wird die Leistungsbeeinträchtigung vermieden, die infolge der Bestimmung entsteht, ob es sich wirklich um einen Administrator handelt. Letztes Beispiel: Das CorrectFilePaths-Shim überprüft den Pfad, um zu bestimmen, ob er verändert werden sollte. Folglich können Sie zusätzliche Systemleistung für die Zeichenfolgenüberprüfung für alle abgefangenen Aufrufe des Dateisystems hinzufügen, plus zusätzlichen Aufwand zum Ersetzen des Zeichenfolgenarguments, wenn eine Übereinstimmung gefunden wird. Sie sehen, es gibt keine einfache Antwort. Folglich führen Sie am besten Tests aus, wenn Leistungsanforderungen bestehen. Die meisten Kunden werden jedoch feststellen, dass die Anwendungen, die Shims zur Wartung benötigen, häufig älter sind. Infolgedessen erfüllen sie weiterhin ihre Leistungskriterien. Dies ist auf den Umstand zurückzuführen, dass die heutige Hardware viel schneller als die Hardware von vor mehreren Jahren ist, als die Software erworben wurde.

Und da Shims als Code im Benutzermodus in einem Anwendungsprozess im Benutzermodus ausgeführt werden, können Sie mit einem Shim keinen Code im Kernelmodus korrigieren. Sie können mit Shims beispielsweise keine Kompatibilitätsprobleme mit Gerätetreibern oder mit anderem Code im Kernelmodus lösen. (Auch Antiviren-, Firewall- und Antispywarecode wird beispielsweise mitunter im Kernelmodus ausgeführt.)

Zurück zum Anfang


Entscheidungshilfen für die Verwendung von Shims zur Minderung von Inkompatibilität

Wenn Microsoft-Berater mit Kunden am Einsatz von Shims für die Lösung von Kompatibilitätsproblemen mit Windows arbeiten, beginnen sie das Gespräch mit einem Überblick über die Funktionsweise von Shims. So wird sichergestellt, dass Personen auf verschiedenen Ebenen im Unternehmen die technischen Auswirkungen der Verwendung von Shims zur Minderung von Problemen verstehen. Die Entscheidung wird jedoch nicht nur unter technischen Gesichtspunkten getroffen.

Wenn Sie die Verwendung von Shims in Erwägung ziehen, sollten Sie sich zuerst fragen, ob Ihr Unternehmen eine gültige Supportvereinbarung für die Anwendung der Windows-Version benötigt, die Sie bereitstellen möchten. Wenn dies zutrifft, sollten Sie überprüfen, ob Ihre Version vom Anbieter unterstützt wird. Wenn in einer vom Anbieter unterstützten Anwendung Fehler auftreten, benötigen Sie keine Shims. Sie brauchen nur eine Supportanfrage an den Anbieter zu richten, damit der Fehler behoben werden kann.

Die meisten Kunden ziehen die Verwendung von Shims nur in Erwägung, wenn ein Anbietersupport nicht erforderlich ist. Vielleicht tritt ein Fehler bei einer Version auf, die nicht von der Windows-Version unterstützt wird, die Sie bereitstellen möchten. Dieser Fehler soll nun behoben werden. Denken Sie daran, dass durch den Einsatz von Shims zum Reparieren der Anwendung der Supportstatus nicht verändert wird. Selbst wenn die Anwendung wieder funktioniert, wird sie weiterhin vom Anbieter nicht unterstützt.

Szenarien, in denen sich Kunden für Shims entscheiden

Beispiele für Szenarien, in denen Microsoft-Berater Kunden beim Einsatz von Shims zur Minderung von Anwendungsproblemen geholfen haben:

  • Sie haben die Anwendung von einem Anbieter erworben, der den Geschäftsbetrieb eingestellt hat.
    Viele Anwendungen, mit denen Microsoft-Berater bislang gearbeitet haben, stammen von Anbietern, die nicht mehr geschäftlich aktiv sind. Support ist also nicht mehr möglich. Die Anwendung ist praktisch, wenn die Berater die Nutzung sicherstellen können, da Sie so selbst keine Software implementieren müssen (häufig gibt es auch keine Anbieter mit einem vergleichbaren Angebot). Da jedoch der Quellcode nicht verfügbar ist, sind Shims die einzige Möglichkeit zur Minderung von Kompatibilitätsproblemen. In diesem Fall empfehlen wir Ihnen, das Risiko der langfristigen Verwendung einer Anwendung ohne weiteren verfügbaren Support zu beachten.
  • Sie haben die Anwendung intern entwickelt.
    Zwar ziehen die meisten Kunden es vor, ihre gesamten Anwendungen so zu überarbeiten, dass sie kompatibel sind, es gibt aber auch Szenarien, in denen dies aus Zeitgründen nicht möglich ist. Das Team kann möglicherweise vor der geplanten Bereitstellung von Windows nicht alle Anwendungen korrigieren. Daher könnten sie in Anwendungen, bei denen dies möglich ist, Shims einsetzen und den Code von solchen Anwendungen ändern, bei denen das Kompatibilitätsproblem mit Shims nicht gelöst werden kann. Sie können aber auch schon an einem langfristigen Projekt zum Ersatz der Anwendung durch eine neue arbeiten und möchten nicht weiter in die vorhandene Version investieren. Stattdessen können Sie mit Shims das Kompatibilitätsproblem lösen, bis die neue Anwendung einsatzbereit ist. Mit der Fertigstellung stellt der Kunde diese kompatible Version bereit, und es kommt zu keinen Verzögerungen bei der Bereitstellung von Windows.
  • Sie haben die Anwendung bei einem Anbieter erworben, der später eine kompatible Version veröffentlichen wird, aber Support ist nicht entscheidend.
    Wenn eine Standardanwendung weder geschäftskritisch noch wichtig ist, verwenden einige Kunden Shims zur Überbrückung. Theoretisch könnten die Benutzer warten, bis die kompatible Version verfügbar ist. Deren Fehlen würde die Bereitstellung nicht behindern. Kann den Benutzern aber eine funktionsfähige Version mit Shims bereitgestellt werden, kann der Zeitraum bis zur Verfügbarkeit einer kompatiblen Version (oder bis das Budget zu deren Erwerb ausreicht) überbrückt werden.

Im Allgemeinen haben Microsoft-Berater festgestellt, dass eine gute Kommunikation und Zusammenarbeit zwischen den Technologiebesitzern (d. h. die Frage, ob mit Shims eine ausreichende Kompatibilität der Anwendung hergestellt werden kann) und den Unternehmensinhabern (d. h. die Frage, ob die Supportbedingungen einer Version mit Shims dieser nicht kompatiblen Anwendung akzeptiert werden können) im Entscheidungsprozess hilfreich ist.

Bestimmen der Anwendungsversionen, in denen Shims eingesetzt werden sollen

Eine genaue Beschreibung der Anwendung eines Shims auf eine bestimmte Anwendung gehört nicht zum Umfang dieses Whitepapers. Es sollte jedoch beachtet werden, dass Shims auf bestimmte Versionen von Anwendungen angewendet werden können. Dies ist für alle Versionen vor und einschließlich einer bestimmten Version möglich oder aber nur für eine bestimmte Version. In beiden Fällen ist sichergestellt, dass die nächste Version der Anwendung, die freigegeben wird, das Shim nicht mehr nutzt.

Dies ist für viele Kunden wichtig. Sie möchten sicherstellen, dass sie eine nicht kompatible Anwendung in einer bestimmten Version korrigieren können. Der Entwickler (ob nun ein internes Entwicklungsteam oder ein externer Anbieter) soll aber dennoch die Anwendung überarbeiten, damit das Shim für die nächste Version nicht mehr angewendet werden muss.

Support für Shims

Über die Supportrichtlinien für Anwendungen, deren Kompatibilität mit Windows mithilfe von Shims hergestellt wurde, entscheiden zwar die jeweiligen Softwareanbieter. Eine andere häufig gestellte Frage ist jedoch, wie Support für den Code der Shims selbst geleistet wird.

Shims werden als Bestandteil von Windows zur Verfügung gestellt und über Windows Update aktualisiert. Folglich gelten die gleichen Supportbedingungen wie für den Rest des Betriebssystems Windows.

Sie können die vom Windows-Produktteam erstellten Shims auf Ihre eigenen Anwendungen anwenden. Microsoft bietet jedoch nicht die erforderlichen Tools, damit Sie eigene benutzerdefinierte Shims in der Shiminfrastruktur erstellen können.

Zurück zum Anfang


Verwaltungsstrategien für die benutzerdefinierte Shimdatenbank

Wenn Sie sich im Rahmen Ihrer Strategie zur Minderung von Problemen mit der Anwendungskompatibilität zum Einsatz von Shims entschieden haben (für bestimmte Klassifikationen von Anwendungen), müssen Sie sich als Nächstes die Frage stellen, welche Strategie Sie für die Verwaltung der benutzerdefinierten Shimdatenbanken nutzen sollten. Die Kunden, mit denen Microsoft-Berater gearbeitet haben, haben sich bei der Verwaltung der benutzerdefinierten Shimdatenbanken für eine der beiden folgenden Methoden entschieden: Bereitstellen von Fixes als Teil des Anwendungspakets oder Verwalten einer zentralen benutzerdefinierten Shimdatenbank.

Unabhängig von der im Unternehmen gewählten Methode finden Sie hier allgemeine Empfehlungen zur Verbesserung der Verwaltung von benutzerdefinierten Shimdatenbanken:

  • Definieren Sie Standards für die Anwendung von Shims.
    Sie sollten auch basierend auf den spezifischen Geschäfts- und Technologieanforderungen Ihres Unternehmens die Szenarien definieren, in denen der Einsatz von Shims sinnvoll ist, wie bereits erläutert.
  • Definieren Sie Standards für benutzerdefinierte Shimdatenbanken.
    Sie könnten Standards für die Zuordnung von Shims zu bestimmten Anwendungen definieren. Beispielsweise könnten Sie sicherstellen, dass Shims immer eine Versionsüberprüfung umfassen, sodass das Shim auf nachfolgende Versionen der Anwendungen nicht mehr angewendet wird.
  • Definieren Sie eine Ressource, die für Fragen und die Durchsetzung der Standards zuständig ist.
    Wenn Sie eine Person oder ein Team damit beauftragen, sich mit der Technologie und den Standards im Zusammenhang mit der Verwendung von Shims vertraut zu machen, hat dies wesentlichen Einfluss auf den Erfolg. Viele Kunden werden als Reaktion auf eine Betriebssystemmigration im Hinblick auf Shims und Kompatibilitätsmaßnahmen aktiv, vergessen nach der Migration aber die Einzelheiten. Mit der Verwaltung der Datenbanken im weiteren Verlauf sollten Sie sicherstellen, dass einige Ressourcen mit diesen Einzelheiten vertraut bleiben.
  • Vermeiden Sie es, Ihre Shimverwaltungslösung überzudimensionieren.
    Natürlich empfiehlt es sich, eine Strategie zu besitzen. Einige Kunden haben eine monatliche Überprüfung und Bereitstellung von Shimaktualisierungen entwickelt. In der Praxis finden jedoch Kunden, die Shims zum Lösen von Anwendungsproblemen verwenden, in der Regel fast alle Shims vor der ersten Bereitstellung. Nur gelegentlich finden sie neue Shims, die sie anschließend anwenden möchten. Es stellt normalerweise einen unnötigen Aufwand dar, über einen ausgeklügelter Prozess zur kontinuierlichen Governance zu verfügen, der von permanenten Änderungen in diesem Bereich ausgeht.

Bereitstellen von Fixes als Teil eines Anwendungspakets

Eine Strategie zur Bereitstellung von Anwendungsfixes besteht in der Aufnahme der benutzerdefinierten Shimdatenbank, die einen Eintrag für die mit dem Paket installierte Anwendung enthält, in das Installationspaket. In den frühen Phasen der Kompatibilitätstests kann dies als einfachste Methode erscheinen. Mit der Zeit kann diese Vorgehensweise jedoch komplexer werden. Microsoft-Berater empfehlen die im Folgenden aufgeführten Überlegungen, bevor diese Methode ausgewählt wird.

Für wie viele Anwendungen werden letztlich Shims eingesetzt?
Sie sollten beachten, dass es sich auch bei benutzerdefinierten Shimdatenbanken um Datenbanken handelt. Wenn Sie also 1.000 Anwendungen mit Shims haben, dauert es länger, 1.000 unterschiedliche einzeilige Datenbanken zu öffnen und abzufragen, wenn nach einer Übereinstimmung für eine bestimmte Anwendung gesucht wird, als eine Datenbank zu öffnen und 1.000 Zeilen abzufragen. Beachten Sie, dass mit jedem neu erstellten Prozess in Windows derartige Leistungseinbußen einhergehen. Auch wenn diese Beeinträchtigungen in der Regel zu gering sind, als dass Endbenutzer sie bemerken könnten, kann je nach Umgebung (nach dem Gesetz der großen Zahlen) am Ende eine unternehmensweite Erhöhung des Stromverbrauchs entstehen, die nicht mehr trivial ist.

Diagramm mit dem Verhältnis zwischen Anwendungssuchzeit und Anzahl der Anwendungen mit Shims

Können Sie nachverfolgen, welche Anwendungen Sie auf welchen Computern bereitgestellt haben?
Möglicherweise stellen Sie nachträglich fest, dass die zur Lösung von verschiedenen Kompatibilitätsproblemen in einer Anwendung vorgesehenen Shims nicht ausreichen. Folglich muss zu einem späteren Zeitpunkt eine aktualisierte Version der benutzerdefinierten Shimdatenbank bereitgestellt werden, die das später im Unternehmen gefundene zusätzliche Problem löst. Wenn Sie die ursprüngliche benutzerdefinierte Shimdatenbank als Teil des Installationspakets bereitgestellt haben, müssen Sie jeden Client ermitteln, auf dem diese Anwendung und die ursprüngliche benutzerdefinierte Shimdatenbank installiert sind, um sie durch die neue Version zu ersetzen. Diese Strategie kann sinnvoll sein, wenn Sie nur in wenigen Anwendungen Shims einsetzen müssen. Wenn es jedoch mehr Anwendungen werden, entscheiden sich meisten Kunden letztlich dagegen.

Verwalten einer zentralen benutzerdefinierten Shimdatenbank

Eine andere Strategie, die die meisten Kunden in Betracht ziehen (und meist auch einsetzen), ist die Verwaltung einer einzelnen benutzerdefinierten Shimdatenbank oder mehrerer benutzerdefinierter Shimdatenbanken mit großen Teilmengen der Shims im Unternehmen. Auf diese Weise können Richtlinien leichter durchgesetzt werden. Zudem können Sie so einheitliche Updates für ermittelte Anwendungsinkompatibilitäten bereitstellen, die bei der Migration zu Windows 7 unterstützt werden müssen. Microsoft-Berater empfehlen die im Folgenden aufgeführten Überlegungen, bevor diese Methode ausgewählt wird:

Verfügen Sie über Bereitstellungstools, mit denen Sie benutzerdefinierte Shimdatenbanken auf allen Zielcomputern bereitstellen und aktualisieren können?
Wenn Sie eine zentrale benutzerdefinierte Shimdatenbank verwalten möchten, müssen Sie über die Tools verfügen, um diese benutzerdefinierte Shimdatenbank auf allen relevanten Computern im Unternehmen bereitstellen und aktualisieren zu können. Wenn auf weitere Anwendungen Shims angewendet werden, muss die aktualisierte Shimdatenbank auf den Zielcomputern installiert sein, bevor die Anwendungen genutzt werden.

Verfügen Sie über eine zentrale Ressource, die die zentrale Shimdatenbank verwalten und aktualisieren kann?
Wenn Sie nach diesem zentralen Ansatz vorgehen, müssen Sie geeignete Besitzer bestimmen. Zudem müssen die Anwendungsbesitzer und -tester den Eskalationspfad für die Anforderung eines Shims kennen, das dann zur Bereitstellung eines Updates auf den Zielcomputern führt.

Microsoft-Berater haben festgestellt, dass diese Strategie in der Regel dann die beste ist, wenn bei Ihnen eine solide Bereitstellungsinfrastruktur vorliegt und der Besitz des Prozesses zentralisiert wurde. Die primären Vorteile sind Zuständigkeit und vereinfachter Support (da die Bereitstellung einer bestimmten Version eines Shims im gesamten Unternehmen konsistenter ist).

Zurück zum Anfang


Zusammenführen von benutzerdefinierten Shimdatenbanken

Kunden, die sich für eine zentrale benutzerdefinierte Shimdatenbank entschieden haben, profitieren von der verbesserten Leistung beim Durchsuchen einer Datenbank, um zu ermitteln, ob Windows ein Shim auf eine bestimmte ausführbare Datei anwenden sollte. Häufig werden Microsoft-Berater gefragt, wie benutzerdefinierte Shimdatenbanken zu einer zentralen benutzerdefinierten Shimdatenbank zusammengeführt werden können. Im Allgemeinen sind die Kunden wie folgt vorgegangen:

  • Anwendungskompatibilitätstests werden in der Regel auf einem Computer mit der aktuellen Version der benutzerdefinierten Shimdatenbank des Unternehmens ausgeführt (bei der es sich auch um eine Vorabversion handeln kann).
  • Wenn für eine Anwendung ein zusätzliches Shim erforderlich ist, erstellt der Tester eine zweite benutzerdefinierte Shimdatenbank mit den Shims, die für diese Anwendung erforderlich sind. Mit dieser (sowie mit Kundenakzeptanztests) überprüft der Tester die Fixes.
  • Wenn die Anwendung alle Funktions- und Integrationstests besteht, wird die benutzerdefinierte Shimdatenbank für die eine Anwendung an das Team übergeben, die die benutzerdefinierte Shimdatenbank verwaltet.
  • Das zentrale Team öffnet die Masterkopie der benutzerdefinierten Shimdatenbank des Unternehmens. Dieser Schritt ist wichtig, da die Datenbank eine GUID (Globally Unique Identifier) enthält, die das Aktualisieren der Datenbank vereinfacht (durch die Installation einer neuen Version einer Datenbank mit derselben GUID wie die der auf dem Computer installierten vorhandenen Datenbank wird die alte Version deinstalliert).
  • Das zentrale Team kann dann die Shims, die in der neuen benutzerdefinierten Shimdatenbank angewendet wurden, kopieren und in die Mastershimdatenbank des Unternehmens einfügen. (Hierbei handelt es sich um Optionen im Kontextmenü von Compatibility Administrator.)
  • Das zentrale Team stellt die neue Version der benutzerdefinierten Shimdatenbank mit dem zusätzlichen Anwendungsfix allen Benutzern erneut zur Verfügung.

Zurück zum Anfang


Bereitstellung der benutzerdefinierten Shimdatenbank

Zur Bereitstellung einer benutzerdefinierten Shimdatenbank für Benutzer sind die folgenden zwei Schritte erforderlich:

  • Platzieren der benutzerdefinierten Shimdatenbank (SDB-Datei) an einem Speicherort, auf den der Computer des Benutzers zugreifen kann (lokal oder im Netzwerk).
  • Aufrufen des Befehlszeilenprogramms „sdbinst.exe“, um die benutzerdefinierte Shimdatenbank lokal zu installieren; „sdbinst.exe“ befindet sich im system32-Verzeichnis, das sich im Pfad fast aller Windows-Konfigurationen befindet.

Diese Schritte können auf beliebige Weise ausgeführt werden. Häufig gehen Kunden jedoch nach einer der beiden folgenden Methoden vor:

  • Packen Sie die SDB-Datei und ein Skript in eine MSI-Datei, und stellen Sie anschließend die MSI-Datei bereit. Stellen Sie dabei sicher, dass die benutzerdefinierte Aktion nicht die Identität des aufrufenden Benutzers annimmt. Wenn Sie z. B. ein Skript von Microsoft Visual Basic® Scripting Edition (VBScript) verwenden, wäre der benutzerdefinierte Aktionstyp „msidbCustomActionTypeVBScript + msidbCustomActionTypeInScript + msidbCustomActionTypeNoImpersonate = 0x0006 + 0x0400 + 0x0800 = 0x0C06 = 3078 decimal“.
  • Platzieren Sie die SDB-Datei auf einer Netzwerkfreigabe, und rufen Sie dann ein Skript auf den Zielcomputern auf. Stellen Sie dabei sicher, dass Sie das Skript zu einem Zeitpunkt aufrufen, zu dem es erweiterte Rechte erhält (beispielsweise in einem Computerstartskript und nicht in einem Benutzeranmeldeskript).

Sie müssen sicherstellen, dass die Installation der benutzerdefinierten Shimdatenbank mit Administratorrechten ausgeführt wird.

Das folgende Beispielskript stammt aus der benutzerdefinierten Aktion einer Windows Installer-Installation (MSI-basiert) einer benutzerdefinierten Shimdatenbank:

Beispielskript

Erste Bereitstellung und Updates

Da das Testen und die Minderung von Anwendungskompatibilitätsproblemen üblicherweise vor der Bereitstellung von einer neuen Version von Windows erfolgt, ist es eine gängige Methode, die benutzerdefinierte Shimdatenbank mit allen zum Zeitpunkt der Bereitstellung bekannten Problemen in das Unternehmensabbild aufzunehmen. Wenn Sie dann die benutzerdefinierte Shimdatenbank aktualisieren müssen, können Sie dieses Update wie oben beschrieben bereitstellen. Nach dieser Methode verwaltet Microsoft die Systemshimdatenbank. Die erste Version wurde mit der RTM-Version (Release to Manufacturing, Produktionsfreigabe) von Windows freigegeben. Updates werden über Windows Update bereitgestellt. Wenn Sie nach diesem Ansatz vorgehen, verwenden Sie eine Methode, die sich in sehr großem Maßstab bewährt hat.

Zurück zum Anfang


Zusammenfassung

Shims sind ein leistungsfähiges Tool für die Minderung von Anwendungskompatibilitätsproblemen und die Fortsetzung der Windows 7-Bereitstellung. Es kann jedoch eine Herausforderung darstellen, die richtigen Szenarien für den Einsatz von Shims zu bestimmen und deren Verwaltung in einem Unternehmen zu bewerkstelligen.

In diesem Whitepaper wurden einige Methoden besprochen, mit denen andere Kunden diese leistungsfähige Technologie nutzen und gleichzeitig Risiken und Kosten minimieren. Kenntnisse zur Funktionsweise von Shims sind der wichtigste Schritt beim Einsatz dieser Technologie. Sie haben gesehen, wie, nachdem die Entscheidung für die Technologie gefallen ist, die Kriterien zur Auswahl der Anwendungen festgelegt werden, für die dieses Tool geeignet ist. Schließlich wurden in diesem Whitepaper noch die Methoden erörtert, nach denen die meisten Kunden eine benutzerdefinierte Shimdatenbank verwalten und bereitstellen.

Zurück zum Anfang

Wichtige Aufgaben

Der Autor

Foto von Chris JacksonChris Jackson, auch als „ The App Compat Guy“ bekannt, ist Principal Consultant und Technical Lead des Windows Application Experience SWAT-Teams. Jackson ist ein weithin anerkannter Experte auf dem Gebiet der Windows-Anwendungskompatibilität. Die von ihm verfassten technischen Dokumente sowie seine Schulungs- und Dienstangebote werden bei Microsoft und auch in anderen Unternehmen genutzt und basieren auf langjähriger praktischer Erfahrung mit Unternehmenskunden und unabhängigen Softwareanbietern.

Er ist Autor und Mitautor einer Vielzahl von technischen Dokumenten und Artikeln zur Anwendungskompatibilität und schreibt Beiträge für das TechNet Magazine. Jackson ist auch Redner auf wichtigen Branchenkonferenzen auf der ganzen Welt, einschließlich TechEd, IT Forum und Microsoft Management Summit.

Verwandte Ressourcen

Bleiben Sie auf dem Laufenden