{"id":55000387,"date":"2023-10-01T00:00:00","date_gmt":"2023-10-19T13:10:29","guid":{"rendered":"http:\/\/access-im-unternehmen.aix-dev.de\/aiu\/?p=387"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-30T00:00:00","slug":"COMAddIns_registrieren","status":"publish","type":"post","link":"https:\/\/vbentwickler.de\/COMAddIns_registrieren\/","title":{"rendered":"COM-Add-Ins registrieren"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/vg08.met.vgwort.de\/na\/3b7f63805db34a3385dda1c43c844b42\" width=\"1\" height=\"1\" alt=\"\"><\/p>\n<p><b>Aus verschiedenen Gr&uuml;nden kann die Installation eines COM-Add-Ins f&uuml;r eine Office-Anwendung fehlschlagen &#8211; oder zumindest erreicht man damit nicht das gew&uuml;nschte Ergebnis. Zum Beispiel k&ouml;nnte ein Benutzer das Setup mit dem COM-Add-In, das normalerweise f&uuml;r den aktuellen Benutzer installiert wird, im Kontext eines anderen Benutzers installieren &#8211; zum Beispiel als Administrator. Dann erscheint das COM-Add-In f&uuml;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&szlig;erdem schauen wir uns an, wo in der Registry der Eintrag f&uuml;r ein COM-Add-In landet und was die verschiedenen Eintr&auml;ge bedeuten.<\/b><\/p>\n<p>Setups haben meist den Zweck, die Installation einer Software f&uuml;r den Benutzer so angenehm wie m&ouml;glich zu machen. Manchmal klappt es allerdings einfach nicht wie gew&uuml;nscht. Das h&auml;ngt zum Beispiel damit zusammen, dass die Registry des Benutzers anders aufgebaut ist, als es das Setup erwartet. Dann werden die f&uuml;r den reibungslosen Betrieb erforderlichen Eintr&auml;ge in der Registry aus Sicht des Setups zwar an der richtigen Stelle vorgenommen, aber sie werden vom System nicht ber&uuml;cksichtigt.<\/p>\n<p>Es gibt n&auml;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.<\/p>\n<p>In diesem Magazin haben wir bereits einige COM-Add-Ins vorgestellt, die selbst festlegen, an welche Stellen der Registry die notwendigen Eintr&auml;ge geschrieben werden sollen. In dem COM-Add-In aus dem Artikel <b>COM-Add-In f&uuml;r Word: PDF-Export <\/b>(<b>www.vbentwickler.de\/383<\/b>) legen wir das beispielsweise wie in Bild 1 fest. Die Konstante <b>RootRegistryFolder_WORD <\/b>nimmt den Basispfad auf, die Funktion <b>DllRegisterServer <\/b>legt die Eintr&auml;ge beim Registrieren der Anwendung in der Registry an.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2023_05\/pic_387_001.png\" alt=\"Anweisungen zum Anlegen der Registry-Eintr&auml;ge\" width=\"700\" height=\"178,757\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 1: Anweisungen zum Anlegen der Registry-Eintr&auml;ge<\/span><\/b><\/p>\n<h2>Wie landen die Eintr&auml;ge in der Registry?<\/h2>\n<p>Wenn wir wie in dem Artikel gezeigt mit twinBASIC entwickeln und die Anwendung kompilieren, startet twinBASIC automatisch die Prozedur <b>DllRegisterServer <\/b>und tr&auml;gt so die Eintr&auml;ge in die Registry ein.<\/p>\n<p>Wenn wir ein Setup mit InnoSetup erstellen, wie wir es in <b>Installation mit Inno Setup: Die Basics <\/b>(<b>www.vbentwickler.de\/382<\/b>) beschreiben, f&uuml;gen wir dem Eintrag f&uuml;r die DLL-Datei noch den Zusatz <b>regserver<\/b> unter Flags hinzu.<\/p>\n<p>Dadurch wird die Funktion <b>DllRegisterServer <\/b>automatisch aufgerufen:<\/p>\n<pre>[Files]\r\nSource: \"Build\\amWordPDFExport_win32.dll\"; DestDir: \"{app}\"; Flags: regserver ignoreversion; Check:Is32Bit <\/pre>\n<p>Hier kann das in der Einleitung beschriebene Szenario auftreten. Wenn die Funktion <b>DllRegisterServer <\/b>in einen Bereich der Registry schreibt, der dem ausf&uuml;hrenden Benutzer geh&ouml;rt, landen die Eintr&auml;ge auch in dem Bereich der Registry f&uuml;r diesen Benutzer.<\/p>\n<p>Andere Benutzer auf dem gleichen Rechner k&ouml;nnen das COM-Add-In somit nicht nutzen.<\/p>\n<p>Das Ergebnis sieht &uuml;brigens wie in Bild 2 aus.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2023_05\/pic_387_002.png\" alt=\"Die resultierenden Registry-Eintr&auml;ge\" width=\"649,627\" height=\"286,205\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 2: Die resultierenden Registry-Eintr&auml;ge<\/span><\/b><\/p>\n<p>Wenn die DLL jedoch schon auf dem Rechner ist, haben wir folgende M&ouml;glichkeiten:<\/p>\n<ul>\n<li>Der Benutzer f&uuml;hrt das Setup einfach im Kontext seines eigenen Benutzerkontos aus.<\/li>\n<li>Der Benutzer nutzt den Befehl <b>regsvr32.exe <\/b>zum Registrieren.<\/li>\n<li>Der Benutzer registriert das COM-Add-In &uuml;ber die Benutzeroberfl&auml;che des jeweiligen Office-Produkts.<\/li>\n<\/ul>\n<p>Den ersten Punkt brauchen wir nicht weiter zu erl&auml;utern. Die anderen beiden schauen wir uns im Anschluss an.<\/p>\n<h2>Registrieren mit regsvr32.exe<\/h2>\n<p>Um dies zu erledigen, ben&ouml;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 &#8211; meist in einem Ordner unterhalb von <b>Programme <\/b>oder <b>Programme (x86)<\/b>.<\/p>\n<p>Wenn wir den Pfad der <b>.dll<\/b>-Datei ermittelt haben, k&ouml;nnen wir die Eingabeaufforderung &ouml;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 <b>Eingabeaufforderung<\/b>. Aus dem Kontextmen&uuml; w&auml;hlen wir dann den Eintrag <b>Als Administrator ausf&uuml;hren <\/b>aus.<\/p>\n<p>Es erscheint die Eingabeaufforderung. Wir verschaffen uns zun&auml;chst einen &Uuml;berblick &uuml;ber die Optionen des Befehls <b>regsvr32<\/b>, indem wir diesen Befehl ohne Parameter eingeben. Die Parameter werden dann in einem Meldungsfenster angezeigt (siehe Bild 3).<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2023_05\/pic_387_003.png\" alt=\"Optionen des Befehls regsvr32.exe\" width=\"599,6265\" height=\"457,7237\" \/><\/p>\n<div class=\"rcp_restricted\"><p><span style=\"color: #ff0000;\">M&ouml;chten Sie weiterlesen? Dann l&ouml;sen Sie Ihr Ticket!<\/span><br \/>\n<span style=\"color: #ff0000;\">Hier geht es zur Bestellung des Jahresabonnements des Magazins <strong>Visual Basic Entwickler<\/strong>:<\/span><br \/>\n<span style=\"color: #ff0000;\"><a style=\"color: #ff0000;\" href=\"https:\/\/shop.minhorst.com\/magazine\/363\/visual-basic-entwickler-jahresabonnement?c=77\">Zur Bestellung ...<\/a><\/span><br \/>\n<span style=\"color: #ff0000;\">Danach greifen Sie sofort auf <strong>alle rund 200 Artikel<\/strong> unseres Angebots zu - auch auf diesen hier!<\/span><br \/>\n<span style=\"color: #000000;\">Oder haben Sie bereits Zugangsdaten? Dann loggen Sie sich gleich hier ein:<\/span><\/p>\n<\/div>\n\n\t\n\t<form id=\"rcp_login_form\"  class=\"rcp_form\" method=\"POST\" action=\"https:\/\/vbentwickler.de\/data\/wp\/v2\/posts\/55000387\/\">\n\n\t\t\n\t\t<fieldset class=\"rcp_login_data\">\n\t\t\t<p>\n\t\t\t\t<label for=\"rcp_user_login\">Username or Email<\/label>\n\t\t\t\t<input name=\"rcp_user_login\" id=\"rcp_user_login\" class=\"required\" type=\"text\"\/>\n\t\t\t<\/p>\n\t\t\t<p>\n\t\t\t\t<label for=\"rcp_user_pass\">Password<\/label>\n\t\t\t\t<input name=\"rcp_user_pass\" id=\"rcp_user_pass\" class=\"required\" type=\"password\"\/>\n\t\t\t<\/p>\n\t\t\t\t\t\t<p>\n\t\t\t\t<input type=\"checkbox\" name=\"rcp_user_remember\" id=\"rcp_user_remember\" value=\"1\"\/>\n\t\t\t\t<label for=\"rcp_user_remember\">Remember me<\/label>\n\t\t\t<\/p>\n\t\t\t<p class=\"rcp_lost_password\"><a href=\"\/data\/wp\/v2\/posts\/55000387?rcp_action=lostpassword\"><\/a><\/p>\n\t\t\t<p>\n\t\t\t\t<input type=\"hidden\" name=\"rcp_action\" value=\"login\"\/>\n\t\t\t\t<input type=\"hidden\" name=\"rcp_redirect\" value=\"https:\/\/vbentwickler.de\/data\/wp\/v2\/posts\/55000387\/\"\/>\n\t\t\t\t<input type=\"hidden\" name=\"rcp_login_nonce\" value=\"123b777de9\"\/>\n\t\t\t\t<input id=\"rcp_login_submit\" class=\"rcp-button\" type=\"submit\" value=\"Login\"\/>\n\t\t\t<\/p>\n\t\t\t\t\t<\/fieldset>\n\n\t\t\n\t<\/form>\n<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Aus verschiedenen Gr&uuml;nden kann die Installation eines COM-Add-Ins f&uuml;r eine Office-Anwendung fehlschlagen &#8211; oder zumindest erreicht man damit nicht das gew&uuml;nschte Ergebnis. Zum Beispiel k&ouml;nnte ein Benutzer das Setup mit dem COM-Add-In, das normalerweise f&uuml;r den aktuellen Benutzer installiert wird, im Kontext eines anderen Benutzers installieren &#8211; zum Beispiel als Administrator. Dann erscheint das COM-Add-In f&uuml;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&szlig;erdem schauen wir uns an, wo in der Registry der Eintrag f&uuml;r ein COM-Add-In landet und was die verschiedenen Eintr&auml;ge bedeuten.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_uf_show_specific_survey":0,"_uf_disable_surveys":false,"footnotes":""},"categories":[662023,66052023,44000034],"tags":[],"yst_prominent_words":[],"class_list":["post-55000387","post","type-post","status-publish","format-standard","hentry","category-662023","category-66052023","category-COMAddIns_programmieren"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/posts\/55000387","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/comments?post=55000387"}],"version-history":[{"count":0,"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/posts\/55000387\/revisions"}],"wp:attachment":[{"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/media?parent=55000387"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/categories?post=55000387"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/tags?post=55000387"},{"taxonomy":"yst_prominent_words","embeddable":true,"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/yst_prominent_words?post=55000387"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}