Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Prüfen, ob DLL registriert? (https://www.delphipraxis.net/93227-pruefen-ob-dll-registriert.html)

Irrgärtner 2. Jun 2007 22:59


Prüfen, ob DLL registriert?
 
Hallo Gemeinde,

meine Frage lautet: wie kann ich prüfen, ob eine DLL registriert wurde (in der Registry)?

Ganz naiv: was hat es eigentlich damit auf sich? Es genügt doch bereits, daß eine DLL im Suchpfad liegt, damit sie geladen werden kann? (Hat jemand evtl. weiterführende Links?)

Nun könnte man einfach versuchen, sie vom Programm aus zu laden, und wenn man keinen Handle darauf zurückbekommt (oder Exception), dann weiß man, sie ist nicht vorhanden. Aber das ist nicht gewollt und eigentlich auch nicht die Fragestellung(?).

Muß man also die Registry durchsuchen? Wie oder besser wonach?
Es gab bereits einmal einen Beitragsfaden zu diesem Thema, der aber wenig ergiebig verlief.

Viele Grüße
Irrgärtner

DeddyH 2. Jun 2007 23:10

Re: Prüfen, ob DLL registriert?
 
Hallo, so ganz hab ich die Fragestellung nicht verstanden, aber sieh Dir mal den Unterschied zwischen statischem und dynamischem Laden von DLLs an. Hier mal ein Link zu Assarbad

Hth

Irrgärtner 3. Jun 2007 14:49

Re: Prüfen, ob DLL registriert?
 
Hallo,

tut mir leid, aber das hilft mir überhaupt nicht weiter.

Es gibt DLLs, die in der Registry eingetragen sind. Wie finde ich aus einem Delphi-Programm heraus heraus (äh...), ob eine bestimmte DLL bereits registriert wurde? Das muß ja irgendwo stehen?
Es fällt mir nicht leicht, das präziser zu formulieren, eben weil ich mich damit nicht auskenne. Wie sehen die Registry-Einträge aus und was ist zugeordnet (irgendwo stand ClassID oder GUID - was ist das)?

Vielen Dank im voraus
Irrgärtner

DeddyH 3. Jun 2007 14:50

Re: Prüfen, ob DLL registriert?
 
Hmmm, reden wir hier von OLE/COM?

Bernhard Geyer 3. Jun 2007 16:45

Re: Prüfen, ob DLL registriert?
 
Eine 100%iger Test ob eine COM/Active-Control in einer DLL fehlerfrei registriert wurde kann man nur feststellen indem man die entsprechenden Interfaces dieser DLL instanziert. In der Registry kann viel stehen und es gibt genügend andere Gründe wieso ein COM/ActiveX trotzdem nicht läuft. Es reicht ja schon eine abhänige (nicht COM-)DLL in der falschen Version (Stichwort: DLL-Hölle).

Ansonsten stehen die Angaben in der Registry unter HKEY_CLASSES_ROOT bzw. im Unterverzeichnis CLSID.


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:15 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz