Freigeben über


Versionsabhängige Registrierungsschlüssel

Die meisten Assemblys müssen für die Verwendung durch COM in der Windows-Registrierung registriert sein. Dies gilt nicht für Assemblys, die COM-Interop ohne Registrierung verwenden.

Sie können eine Assembly mit dem Assembly Registration-Tool (Regasm.exe) oder mit den durch die RegistrationServices-Klasse verfügbar gemachten Methoden registrieren. Bei beiden Vorgängen werden versionsabhängige Registrierungsschlüssel erstellt, die gleichzeitig mehrere Versionen derselben Assembly auf einem Computer zulassen.

In diesem Thema wird beschrieben, wie Regasm.exe Registrierungsschlüssel zum Aktivieren von COM hinzufügt und entfernt. Wenn Sie ein benutzerdefiniertes Installationsprogramm schreiben, erhalten Sie in diesem Thema Informationen zu den Anforderungen für die Registrierung der parallelen Ausführung für COM-Interop.

Registrierungslayout für versionsabhängige Schlüssel

Wenn Sie eine Assembly zum ersten Mal registrieren, erstellt Regasm.exe eine Reihe von Schlüsseln auf oberster Ebene für die einzelnen Klassen in der Assembly und fügt unter dem Schlüssel HKEY CLASSES\ROOT\CLSID\{}\InprocServer32 einen Unterschlüssel hinzu. Das folgende Registrierungslayout stellt einen Unterschlüssel für className, Version 1.0.0.0, dar.

CLSID\{}
@="namespaceName.className"
CLSID\{}\InprocServer32
@="mscoree.dll"
ThreadingModel = "Both" 
Class="namespaceName.className"
Assembly="name, Version=2.0.0.0, Culture=neutral, PublicKeyToken="
RuntimeVersion="v1.0.3705"
1.0.0.0
   Class="namespaceName.className"
   Assembly="name, Version=1.0.0.0, Culture=neutral, PublicKeyToken="
          RuntimeVersion="v1.0.3705"
CLSID\{}\ProgId
@="namespaceName.className"
CLSID\{}\ImplementedCategories\{guid}

Wenn Sie Folgeversionen der Assembly registrieren, fügt Regasm.exe einen versionsabhängigen Unterschlüssel für jede neue Version ein. Alle Versionen derselben Assembly verwenden die im vorhergehenden Registrierungslayout angezeigten Schlüssel der obersten Ebene gemeinsam. Der folgende Auszug aus dem Layout stellt die Unterschlüssel 1.0.0.0 und 2.0.0.0 derselben Assembly dar.

1.0.0.0
   Class="namespaceName.className"
   Assembly="name, Version=1.0.0.0, Culture=neutral, PublicKeyToken="
          RuntimeVersion="v1.0.3705"
2.0.0.0
   Class="namespaceName.className"
   Assembly="name, Version=2.0.0.0, Culture=neutral, PublicKeyToken="
          RuntimeVersion="v1.1.5000"

Entfernung versionsabhängiger Schlüssel

Regasm.exe entfernt einen versionsabhängigen Unterschlüssel nur, wenn Sie die entsprechende Assemblyversion deinstallieren. Wenn Sie z. B. className, Version 1.0.0.0, deinstallieren, entfernt Regasm.exe den Unterschlüssel 1.0.0.0, wobei aber alle Schlüssel der obersten Ebene und der Unterschlüssel für die Version 2.0.0.0 erhalten bleiben.

CLSID\{}
   @="namespaceName.className"
CLSID\{}\InprocServer32
   @="mscoree.dll"
ThreadingModel = "Both" 
Class="namespaceName.className"
Assembly="name, Version=2.0.0.0, Culture=neutral, PublicKeyToken="
RuntimeVersion="v1.0.3705"
Version
2.0.0.0
   Class="namespaceName.className"
   Assembly="name, Version=2.0.0.0, Culture=neutral, PublicKeyToken="
          RuntimeVersion="v1.1.5500"
CLSID\{}\ProgId
   @="namespaceName.className"
CLSID\{}\ImplementedCategories\{guid}

Wenn Sie die letzte Version einer Assembly deinstallieren, entfernt Regasm.exe alle versionsabhängigen Unterschlüssel. Außerdem werden die der Assembly zugeordneten Schlüssel der obersten Ebene aus der Registrierung entfernt.

Siehe auch

Konzepte

Laufzeitinitialisierung aus einer COM-Anwendung

Konfigurieren einer COM-Anwendung für die parallele Ausführung

Anwenden versionsabhängiger Attribute

COM-Komponenten und parallele Ausführung

Weitere Ressourcen

Parallele Ausführung für COM-Interop