COM-Add-Ins registrieren

Aus verschiedenen Gründen kann die Installation eines COM-Add-Ins für eine Office-Anwendung fehlschlagen – oder zumindest erreicht man damit nicht das gewünschte Ergebnis. Zum Beispiel könnte ein Benutzer das Setup mit dem COM-Add-In, das normalerweise für den aktuellen Benutzer installiert wird, im Kontext eines anderen Benutzers installieren – zum Beispiel als Administrator. Dann erscheint das COM-Add-In für den Benutzer jedoch nicht. In diesem Artikel zeigen wir zwei schnelle Wege, wie die Installation dennoch gelingt, sofern die DLL-Datei mit dem COM-Add-In vorliegt. Außerdem schauen wir uns an, wo in der Registry der Eintrag für ein COM-Add-In landet und was die verschiedenen Einträge bedeuten.

Setups haben meist den Zweck, die Installation einer Software für den Benutzer so angenehm wie möglich zu machen. Manchmal klappt es allerdings einfach nicht wie gewünscht. Das hängt zum Beispiel damit zusammen, dass die Registry des Benutzers anders aufgebaut ist, als es das Setup erwartet. Dann werden die für den reibungslosen Betrieb erforderlichen Einträge in der Registry aus Sicht des Setups zwar an der richtigen Stelle vorgenommen, aber sie werden vom System nicht berücksichtigt.

Es gibt nämlich bestimmte Registry-Bereiche, die Office-Anwendungen beim Start untersuchen, um zu erfahren, ob COM-Add-Ins oder andere Anwendungen vorliegen, die mit der Office-Anwendung gestartet werden sollen.

In diesem Magazin haben wir bereits einige COM-Add-Ins vorgestellt, die selbst festlegen, an welche Stellen der Registry die notwendigen Einträge geschrieben werden sollen. In dem COM-Add-In aus dem Artikel COM-Add-In für Word: PDF-Export (www.vbentwickler.de/383) legen wir das beispielsweise wie in Bild 1 fest. Die Konstante RootRegistryFolder_WORD nimmt den Basispfad auf, die Funktion DllRegisterServer legt die Einträge beim Registrieren der Anwendung in der Registry an.

Anweisungen zum Anlegen der Registry-Einträge

Bild 1: Anweisungen zum Anlegen der Registry-Einträge

Wie landen die Einträge in der Registry?

Wenn wir wie in dem Artikel gezeigt mit twinBASIC entwickeln und die Anwendung kompilieren, startet twinBASIC automatisch die Prozedur DllRegisterServer und trägt so die Einträge in die Registry ein.

Wenn wir ein Setup mit InnoSetup erstellen, wie wir es in Installation mit Inno Setup: Die Basics (www.vbentwickler.de/382) beschreiben, fügen wir dem Eintrag für die DLL-Datei noch den Zusatz regserver unter Flags hinzu.

Dadurch wird die Funktion DllRegisterServer automatisch aufgerufen:

[Files]
Source: "Build\amWordPDFExport_win32.dll"; DestDir: "{app}"; Flags: regserver ignoreversion; Check:Is32Bit 

Hier kann das in der Einleitung beschriebene Szenario auftreten. Wenn die Funktion DllRegisterServer in einen Bereich der Registry schreibt, der dem ausführenden Benutzer gehört, landen die Einträge auch in dem Bereich der Registry für diesen Benutzer.

Andere Benutzer auf dem gleichen Rechner können das COM-Add-In somit nicht nutzen.

Das Ergebnis sieht übrigens wie in Bild 2 aus.

Die resultierenden Registry-Einträge

Bild 2: Die resultierenden Registry-Einträge

Wenn die DLL jedoch schon auf dem Rechner ist, haben wir folgende Möglichkeiten:

  • Der Benutzer führt das Setup einfach im Kontext seines eigenen Benutzerkontos aus.
  • Der Benutzer nutzt den Befehl regsvr32.exe zum Registrieren.
  • Der Benutzer registriert das COM-Add-In über die Benutzeroberfläche des jeweiligen Office-Produkts.

Den ersten Punkt brauchen wir nicht weiter zu erläutern. Die anderen beiden schauen wir uns im Anschluss an.

Registrieren mit regsvr32.exe

Um dies zu erledigen, benötigen wir den Pfad zu der zu installierenden COM-Add-In-Datei. Wenn zuvor bereits ein Setup gelaufen ist, wurde darin festgelegt, wo die Datei gelandet ist – meist in einem Ordner unterhalb von Programme oder Programme (x86).

Wenn wir den Pfad der .dll-Datei ermittelt haben, können wir die Eingabeaufforderung öffnen, am Besten im Administratormodus. Dazu geben wir cmd in das Windows-Suchfeld ein und klicken mit der rechten Maustaste auf den nun erscheinenden Befehl Eingabeaufforderung. Aus dem Kontextmenü wählen wir dann den Eintrag Als Administrator ausführen aus.

Es erscheint die Eingabeaufforderung. Wir verschaffen uns zunächst einen Überblick über die Optionen des Befehls regsvr32, indem wir diesen Befehl ohne Parameter eingeben. Die Parameter werden dann in einem Meldungsfenster angezeigt (siehe Bild 3).

Optionen des Befehls regsvr32.exe

Möchten Sie weiterlesen? Dann lösen Sie Ihr Ticket!
Hier geht es zur Bestellung des Jahresabonnements des Magazins Visual Basic Entwickler:
Zur Bestellung ...
Danach greifen Sie sofort auf alle rund 200 Artikel unseres Angebots zu - auch auf diesen hier!
Oder haben Sie bereits Zugangsdaten? Dann loggen Sie sich gleich hier ein:

Schreibe einen Kommentar