Die Registrierung .Net COM-DLLs ohne Admin-Rechte / regasm

Kürzlich schrieb ich eine Klassenbibliothek in C# für die Verwendung in Office-Anwendungen, einschließlich einer kritischen Access-Anwendung, die verwendet ~70 Leute. Für Benutzer mit admin-Rechte, die DLL registrieren, ist trivial, aber immer die DLL die Arbeit an anderen Maschinen war problematisch.

Registrierung der DLL für die Verwendung mit admin-rechten

  • Erstellen Sie die DLL, die in Visual Studio. Sicherzustellen, dass diese Optionen ausgewählt sind, auf das Projekt Anwendung tab:
    • Ausgang Typ: Klasse Bibliothek
    • Montage Informationen: Make assembly COM-sichtbar: Geprüft
  • Verwenden Sie eine erhöhte Eingabeaufforderung zu registrieren Sie die assembly:
    • RegAsm YourDll.dll /tlb /codebase
  • Fügen Sie einen Verweis auf YourDll.tlb in VBA: Tools-->Referenzen
  • Stellen Sie sicher, dass Sie erstellen eine Instanz des Objekts

Was ist passiert?

Regasm tut einige Dinge hier. Erstens, es ist die Schaffung einer Art Bibliothek (YourDLL.tlb) bietet Informationen über die Klassen, die in der DLL. Zweitens, es wird speichern die Informationen über die Bibliothek in der Registrierung so, dass das system "weiß", was Sie meinen, wenn Sie Fragen, für eine Klasse, die instanziiert werden sollen, als ein Objekt.

Um zu sehen, welche registry-Einträge Regasm wird hinzufügen, können Sie es mit der /regfile parameter:

Regasm YourDLL.dll /codebase /regfile

(Die /regfile option ungültig ist mit der /tlb parameter.)

Wenn die /codebase option weist Regasm enthalten Informationen darüber, wo YourDLL.dll befindet sich auf der Festplatte, die ist wichtig für die Erstellung der Objekte.

Wenn Sie öffnen YourDLL.reg in einem text-editor, sehen Sie die Einträge, die Regasm ist das hinzufügen der registry-Einträge, um HKEY_Classes_Root (die eigentlich nur eine Umleitung zu HKLM\Software\Classes). Leider, Sie benötigen admin-Rechte zum ändern HKLM, so dass dies nicht zur Arbeit zu gehen, unsere anderen Nutzern.

Gibt es ein paar andere threads (z.B. Registrierung einer COM ohne Admin-Rechte, Registrieren von COM-DLL für den Einsatz von VBA, Register DLL (ActiveX) für non-admin-Benutzer, Unfähig, sich zu registrieren .NET-COM-DLL, COM-Interop-ohne regasm) dass das problem zu besprechen, aber Ihre Lösungen sind Komplex (z.B. benötigen registry-Umleitung) oder unvollständig (vorausgesetzt, Sie bereits wissen, mindestens die Hälfte der Antworten) oder nicht die Arbeit in gemischten 64/32 bit-Umgebungen (z.B. Win64, Office32).

So wie Sie sich registrieren eine COM-DLL, die in Visual Studio erstellt, für die Verwendung in VBA 32-und 64-bit-Umgebungen für den aktuellen Benutzer ohne Administratorrechte?

InformationsquelleAutor C. White | 2016-05-12
Schreibe einen Kommentar