Freigeben über


DLL/COM-Umleitung unter Windows

Die DLL/COM-Umleitung ist eine Anwendungsisolationsstrategie, die von Unternehmensadministratoren unter Windows XP angewendet wird.

**Windows Server 2008, Windows Vista, Windows Server 2003 und Windows XP mit SP2: ** Die Verwendung von DLL/COM-Umleitungsstrategien wird nicht empfohlen, da isolierte Anwendungen, die Manifeste und parallele Assemblys verwenden, einfacher zu aktualisieren und zu verwalten sind. Das Vorhandensein einer lokalen Datei wird ignoriert, wenn ein Manifest vorhanden ist. Die DLL/COM-Umleitungsstrategie mit lokalen Dateien funktioniert, wenn die Anwendung kein Manifest hat.

Die DLL/COM-Umleitung bindet eine Anwendung an eine lokale Version einer Komponente. Die Dateien der lokalen Komponente können von der Systemversion der Komponente getrennt an einem für die Anwendung privaten Speicherort aufbewahrt werden. Die Systemversion der Komponente ist global registriert und für alle anderen Anwendungen verfügbar, die an sie gebunden sind. Die lokale Version der Komponente ist für die exklusive Verwendung der Anwendung reserviert. Bei Bedarf können die von der Anwendung verwendeten Komponentendateien gleichzeitig mit den Komponentendateien des Systems in den Arbeitsspeicher geladen werden.

Die DLL/COM-Umleitung wird aktiviert, indem eine spezielle Datei zusammen mit einer Kopie der lokalen Komponentendatei in dasselbe Verzeichnis wie die ausführbare Datei der Anwendung installiert wird. Die spezielle Datei ist eine leere Datei, die nach dem Dateinamen der ausführbaren Anwendung benannt ist und mit LOCAL angefügt wird. Um beispielsweise die DLL/COM-Umleitung für eine Anwendung namens Myapp zu aktivieren, müssen die lokale Version der Komponente und eine leere Datei mit dem Namen Myapp.exe.local in den Ordner mit Myapp.exe kopiert werden. Dadurch wird die Anwendung an die lokale Version der Komponente und nicht an die global freigegebene Version der Komponente gebunden.

Wenn eine Anwendung eine Komponentendatei lädt, z. B. eine DLL- oder OCX-Datei, sucht Windows zuerst in dem Ordner, in dem die lokale und ausführbare Datei der Anwendung installiert ist. Wenn sie gefunden wird, verwendet die Anwendung diese Komponentendatei unabhängig von einem Verzeichnissuchpfad, der in der Anwendung oder in der Registrierung definiert ist. Wenn sie nicht gefunden wird, wird die Komponentendatei im definierten Suchpfad verwendet.

Das Installationshilfsprogramm muss die folgenden Schritte ausführen, um die Anwendung mit DLL/COM-Umleitung zu installieren:

  • Eine leere lokale Datei muss in denselben Ordner wie die ausführbare Datei der Anwendung kopiert werden.
  • Alle Komponenten, DLL- und OCX-Dateien, die von der Anwendung verwendet werden, müssen in denselben Ordner wie die ausführbare Datei der Anwendung kopiert werden.
  • Isolierte COM-Komponenten müssen bei Windows registriert werden, damit verschiedene Versionen der Assembly nicht miteinander in Konflikt stehen, wenn sie gleichzeitig in den Arbeitsspeicher geladen werden. Der Registrierungsprozess erfordert, dass sich die Implementierung der Komponente zwar zwischen den Versionen ändern kann, bestimmte COM-Metadaten wie CLSID, ProgID, Typbibliothek und Threadingmodell jedoch nicht.
  • Wenn die Anwendung mit dem Windows Installer installiert wird, kann das Anwendungsverzeichnis mithilfe der LockPermissions-Tabelle gesichert werden. In der Regel erhält das System Lese-, Schreib- und Ausführungszugriff. allen anderen Prozessen wird nur Ausführungs- und Lesezugriff gewährt.