Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Die IClassFactory-Schnittstelle für ein Klassenobjekt stellt den grundlegenden Objekterstellungsmechanismus von COM bereit. Mit IClassFactory kann ein Server die Objekterstellung auf Computerbasis steuern. Die Implementierung der IClassFactory::CreateInstance-Methode kann die Objekterstellung basierend auf dem Vorhandensein einer Computerlizenz zulassen oder verbieten. Eine Computerlizenz ist ein Teil der Informationen, die von der Anwendung getrennt sind, die auf einem Computer vorhanden ist, um anzugeben, dass die Software von einer gültigen Quelle installiert wurde, z. B. die Installationsdatenträger des Herstellers. Wenn die Computerlizenz nicht vorhanden ist, kann der Server die Objekterstellung nicht zulassen. Die Computerlizenzierung verhindert Piraterie in Fällen, in denen ein Benutzer versucht, die Software von einem Computer auf einen anderen zu kopieren, da die Lizenzinformationen nicht mit der Software kopiert werden und der Computer, der die Kopie erhält, nicht lizenziert ist.
In einer Komponentensoftwarebranche benötigen Anbieter jedoch eine bessere Kontrolle über die Lizenzierung. Zusätzlich zur Computerlizenzsteuerung muss ein Anbieter einigen Clients das Erstellen eines Komponentenobjekts gestatten, während andere Clients die gleiche Funktion verweigern. Dies erfordert, dass die Clientanwendung einen Lizenzschlüssel aus der Komponente abruft, während die Clientanwendung noch in der Entwicklung ist. Die Clientanwendung verwendet den Lizenzschlüssel zur Laufzeit, um Objekte auf einem nicht lizenzierten Computer zu erstellen.
Wenn beispielsweise ein Anbieter Entwicklern eine Bibliothek mit Steuerelementen bereitstellt, verfügt der Entwickler, der die Bibliothek erwirbt, über eine vollständige Computerlizenz, sodass die Objekte auf dem Entwicklungscomputer erstellt werden können. Der Entwickler kann dann eine Clientanwendung auf dem lizenzierten Computer erstellen, auf dem mindestens ein Steuerelement enthalten ist. Wenn die resultierende Clientanwendung auf einem anderen Computer ausgeführt wird, müssen die in der Clientanwendung verwendeten Steuerelemente auf dem anderen Computer erstellt werden, auch wenn dieser Computer keine Computerlizenz für die Steuerelemente des ursprünglichen Herstellers besitzt.
Die IClassFactory2-Schnittstelle stellt diese Steuerungsebene bereit. Um die schlüsselbasierte Lizenzierung für eine bestimmte Komponente zuzulassen, implementieren Sie IClassFactory2 für das Klassenfactoryobjekt für diese Komponente. IClassFactory2wird von IClassFactory abgeleitet. Durch die Implementierung von IClassFactory2 erfüllt das Klassenfactoryobjekt daher die grundlegenden COM-Anforderungen.
Verwenden Sie die folgenden Methoden in IClassFactory2, um eine lizenzierte Komponente in Ihre Clientanwendung zu integrieren:
- Die GetLicInfo-Methode füllt eine LICINFO-Struktur mit Informationen, die das Lizenzierungsverhalten der Klassenfactory beschreiben. Die Klassenfactory kann z. B. Lizenzschlüssel für die Laufzeitlizenzierung bereitstellen, wenn das fRunTimeKeyAvail-ElementWAHR ist.
- Die RequestLicKey-Methode stellt einen Lizenzschlüssel für die Komponente bereit. Eine Computerlizenz muss verfügbar sein, wenn der Client diese Methode aufruft.
- Die CreateInstanceLic-Methode erstellt eine Instanz der lizenzierten Komponente, wenn der Lizenzschlüsselparameter (BSTR bstrKey) gültig ist.
Hinweis
In seinen Typinformationen verwendet eine Komponente das Attribut, das lizenziert ist, um die Coclass zu kennzeichnen, die lizenzierung über IClassFactory2 unterstützt.
Zunächst benötigen Sie ein separates Entwicklungstool, das auch ein Client der lizenzierten Komponente ist. Der Zweck dieses Tools besteht darin, den Laufzeitlizenzschlüssel abzurufen und in Ihrer Clientanwendung zu speichern. Dieses Tool wird nur auf einem Computer ausgeführt, der über eine Computerlizenz für die Komponente verfügt. Das Tool ruft die Methoden GetLicInfo und RequestLicKey auf, um den Laufzeitlizenzschlüssel abzurufen und speichert dann den Lizenzschlüssel in Ihrer Clientanwendung. Beispielsweise könnte das Entwicklungstool eine Headerdatei (.h) erstellen, die den BSTR-Lizenzschlüssel enthält, und dann würden Sie diese H-Datei in Ihre Clientanwendung einschließen.
Um die Komponente in Ihrer Clientanwendung zu instanziieren, versuchen Sie zuerst, das Objekt direkt mit IClassFactory::CreateInstance zu instanziieren. Wenn CreateInstance erfolgreich ist, wird der zweite Computer für die Komponente lizenziert, und Objekte können nach Bedarf erstellt werden.If CreateInstance succeeds, the second machine is licensed for the component and objects can be created at will. Wenn CreateInstancemit dem Rückgabecode CLASS_E_NOTLICENSED fehlschlägt, besteht die einzige Möglichkeit zum Erstellen des Objekts darin, den Laufzeitschlüssel an die CreateInstanceLic-Methode zu übergeben. CreateInstanceLic überprüft den Schlüssel und erstellt das Objekt, wenn der Schlüssel gültig ist.
Auf diese Weise kann eine anwendung, die mit Komponenten (z. B. Steuerelementen) erstellt wurde, auf einem Computer ausgeführt werden, der keine andere Lizenz besitzt. Nur die Clientanwendung, die die Laufzeitlizenz enthält, darf die fraglichen Komponentenobjekte erstellen.
Die IClassFactory2-Schnittstelle unterstützt Flexibilität in Lizenzierungsschemas. Beispielsweise kann der Serverimplementierer Lizenzschlüssel in der Komponente für zusätzliche Sicherheit verschlüsseln. Serverimplementierer können auch Funktionalitätsebenen in ihren Objekten aktivieren oder deaktivieren, indem unterschiedliche Lizenzschlüssel für unterschiedliche Funktionen bereitgestellt werden. Ein Schlüssel kann z. B. eine Basisfunktionalität zulassen, während eine andere grundlegende und erweiterte Funktionalität usw. zulässt.
Zugehörige Themen