Addins werden nicht registriert

Jan 12, 2014 at 9:31 AM
Hallo,

bei mir werden die Addins einfach nicht registriert. Wenn ich z.B. die Outlook COMAddin Examples öffne und F5 drücke, dann Outlook öffne, wird das Addin nicht angezeigt.

Unter den COM Addins in den Entwicklereinstellungen wird es auch nicht angezeigt.

Meine Umgebung:
Windows 7 Prof. 64Bit
Visual Studio 2010 Prof.
Outlook 2010

Was kann ich noch tun?

Dominik
Jan 12, 2014 at 12:14 PM
OK, das Problem hat sich gelöst....

Man muss Visual Studio als Admin ausführen, dann klappts.

Jetzt stellt sich aber die Frage, wie kann ich dann ein Addin installieren ohne Admin-Rechte, wenn auf HKEY_CLASSES_ROOT zugegriffen werden muss?
Coordinator
Jan 13, 2014 at 1:57 PM
Hallo,

Ein Office Addin braucht für die Installation immer erhöhte Rechte, es spielt dabei keine Rolle ob du VSTO, NetOffice, Interop, oder Visual Basic6 verwendest. Das Addin muss sich, wie jede COM Komponente, auf der Maschine global registrieren (HKEY_CLASSES) um als COM Komponente, von jedem der es möchte, genutzt zu werden. Der COM Standard sieht leider keine Differenzierung zwischen User und System allgemein vor.

Hinweis1: Die Office Anwendung benötigt bei NetOffice keine erhöhten Rechte um das Addin auch aus dem Office Machine Key(HKEY_LOCAL_MACHINE/Software/Microsoft/Office/ zu laden. (Für VSTO gelten hier nämlich Einschränkungen)

Hinweis 2: Mit einem Rechtsklick auf devenv.exe (Visual Studio) kannst du unter Eigenschaften festlegen das Visual Studio immer mit erhöhten Rechten starten soll. Andernfalls bekommst du wahrscheinlich eine Fehlermeldung nach dem Kompilieren "Zugriff verweigert". Dies passiert weil Visual Studio das Addin gleich für dich registrieren möchte, das ist nichts als eine Installation, und die funktioniert eben leider nie ohne erhöhte Rechte. *sad but true
Jan 13, 2014 at 2:51 PM
Edited Jan 13, 2014 at 2:51 PM
SebastianDotNet wrote:
Hallo,

Ein Office Addin braucht für die Installation immer erhöhte Rechte, es spielt dabei keine Rolle ob du VSTO, NetOffice, Interop, oder Visual Basic6 verwendest. Das Addin muss sich, wie jede COM Komponente, auf der Maschine global registrieren (HKEY_CLASSES) um als COM Komponente, von jedem der es möchte, genutzt zu werden. Der COM Standard sieht leider keine Differenzierung zwischen User und System allgemein vor.

Hinweis1: Die Office Anwendung benötigt bei NetOffice keine erhöhten Rechte um das Addin auch aus dem Office Machine Key(HKEY_LOCAL_MACHINE/Software/Microsoft/Office/ zu laden. (Für VSTO gelten hier nämlich Einschränkungen)

Hinweis 2: Mit einem Rechtsklick auf devenv.exe (Visual Studio) kannst du unter Eigenschaften festlegen das Visual Studio immer mit erhöhten Rechten starten soll. Andernfalls bekommst du wahrscheinlich eine Fehlermeldung nach dem Kompilieren "Zugriff verweigert". Dies passiert weil Visual Studio das Addin gleich für dich registrieren möchte, das ist nichts als eine Installation, und die funktioniert eben leider nie ohne erhöhte Rechte. *sad but true
Das ist nicht ganz richtig ;-)

Habe eine Methode gefunden, wie man COM Komponenten ohne Admin-Rechte registrieren kann.

Bei Interesse schreibe ich gerne eine kleine Applikation bzw. werde hier posten, wie das funktioniert.
Coordinator
Jan 13, 2014 at 3:22 PM
Ich glaube zwar nicht an Zauberei, ab das Kunststück würde ich ja nur zu gerne sehen.
Ich bleibe dabei und sage eine COM Komponente braucht erhöhte Rechte um sie zu registriren, und early-bind verfügbar zu machen.
(Es gibt ein paar late-binding tricks, aber registrieren ohne erhöhte Rechte, das geht nicht.)

*Sebastian
Jan 13, 2014 at 3:54 PM
Tja....

Jeder User hat seinen eigenen "HKEY_CLASSES_ROOT", und zwar unter: HKEY_CURRENT_USER\Software\Classes

Leider gibt es kein fertiges Programm, um die COM Komponente hier zu registrieren, deshalb musste ich alles per Hand eintragen. Aber es wäre möglich, dafür ein Programm zu schreiben.
Jan 13, 2014 at 8:54 PM
Excel-DNA schafft es, ohne Admin-Rechte Excel COM-Addins zum laufen zu bringen. Dabei werden nur temporär in der User-Registry Einträge gemacht und dann wieder gelöscht. Ob das auch für andere Office Anwendungen funktioniert, weiß ich nicht.