registireren einer DLL für alle User

22/08/2008 - 13:09 von Falk Stricker | Report spam
Hallo,

ich habe ein großes Problem mit einer DLL. Wenn ich eine Installation
erstelle, wo eine DLL registriert werden muss, kann dieses Setup nur von
einem Nutzer mit Adminrechten ausgeführt werden. Wenn ich dann das Programm
mit Adminrechten laufen lasse ist alles ok. Soweit so gut.

Lasse ich aber das Programm als 'Normaler User' laufen, dann bekomme ich die
Meldung 'Automatisierungsfehler: Bibliothek nicht registriert.

Wie kann ich nun die DLL beim Setup für alle Nutzer registreiren?

Beste Grüße
Falk Stricker
 

Lesen sie die antworten

#1 Schmidt
22/08/2008 - 14:41 | Warnen spam
"Falk Stricker" schrieb im Newsbeitrag
news:48ae9e7f$0$660$

ich habe ein großes Problem mit einer DLL.
Wenn ich eine Installation erstelle, wo eine DLL registriert
werden muss, kann dieses Setup nur von einem Nutzer mit
Adminrechten ausgeführt werden. Wenn ich dann das Programm
mit Adminrechten laufen lasse ist alles ok. Soweit so gut.

Wie kann ich nun die DLL beim Setup für alle Nutzer registreiren?


Vielleicht einfach mal einen RegFree-COM-
Instanziierungsansatz ausprobieren, damit geht man dann
sàmtlichen Registry-Problemen aus dem Weg.

entweder über MS-SxS services (>=W2K) in Verbindung
mit .local-Files im App.Path.

Oder (aus meiner Warte) den etwas einfacheren, direkteren
Weg über meine DirectCOM.dll gehen:
http://www.thecommon.net/10.html

eine etwas neuere Variante ist hier enthalten:
www.datenhaus.de/Downloads/dhRichClientDemo.zip

Wenn Du nur das regfree instancing brauchst,
sollten beide Versionen funktionieren, die neuere
Variante hat eigentlich nur ein paar Fixes bekommen
hinsichtlich der Threading-Helper-Funktionen
und enthàlt noch ein paar Exports mehr, die an
anderer Stelle vom RichClient-Toolset benutzt werden.

Hinsichtlich der Benutzung benötigst Du nur einen Declare
in Deiner App (für den GETINSTANCE-Call) und kannst
ansonsten in Deinem Projekt alles so lassen, wie es ist
(inklusive der Referenz auf Deine AX-Dll für early Binding).

Dann wàre anschliessend nur noch jede Zeile, die
einen Instanziierungsaufruf gegen Public-Klassen Deiner
Dll enthàlt (suchen nach dem New-Keyword oder
dem CreateObject-Call) zu ersetzen mit:
Set oMyDllClassInstance = GETINSTANCE(strDllPath, strClassName)

Vielleicht mal zunàchst in einem separaten Testprojekt
zusammen mit einer Referenz zu Deiner AX-Dll
anhand von ein paar Methodenaufrufen ausprobieren.

Olaf

Ähnliche fragen