2009-03-06 5 views
51

So come registrare DLL ma non sono mai stato davvero sicuro del motivo per cui lo sto facendo o in quali condizioni una DLL deve essere registrata. Qualcuno potrebbe spiegarmi o indicarmi qualche documentazione?Cosa fa la registrazione di una DLL?

risposta

40

Quando viene registrata una DLL, viene richiamato il punto di ingresso del metodo DllRegisterServer nella DLL. Allo stesso modo, DllUnregisterServer viene richiamato quando una DLL non è registrata.

come descritto nel this MSDN article:

incarica un server in-process per creare sue voci di registro per tutte le classi supportati in questo modulo server . Se questa funzione non riesce, lo stato del Registro di sistema per tutte le sue classi è indeterminato.

Per DLL COM, è necessario implementare le proprie DllRegisterServer e DllUnregisterServer metodi punto di ingresso che fanno la registrazione/annullamento della registrazione a seconda dei casi. Il codice di esempio per DllRegisterServer può essere trovato here.

Il risultato finale della registrazione di una DLL è che tutti i CLSID per i componenti nella DLL sono registrati con HKEY_CLASSES_ROOT\CLSID. Ciò consente a CoCreateInstance di trovare il server corretto durante l'istanza di oggetti COM da un'altra DLL o applicazione.

DllUnregisterServer eseguirà il contrario e rimuoverà tutti i CLSID dal Registro di sistema che sono stati inseriti da DllRegisterServer.

Ulteriori informazioni generali su DllRegisterServer possono essere trovate here.

+0

Quando creo una DLL ActiveX in VB6 Non ho implementare DllRegisterServer. – CJ7

6

Ciò che viene comunemente indicato come registrazione DLL è quando implementa un oggetto COM. regsvr32 garantisce che sia possibile creare un'istanza dell'oggetto. Quando ad es. VBScript utilizza New o CreateObject(), la registrazione garantisce che COM sappia quale DLL caricare per creare una nuova istanza, sia per nome che per CLSID.

Vedere "the layman's explanation" per un riepilogo (molto) breve.

+0

Il collegamento è interrotto. Si prega di fornire un sostituto. –

+1

Fatto. Anche archiviato come https://web.archive.org/web/20170222094351/https://chewychong.wordpress.com/2004/08/23/layman-s-explanation-of-regscvs-regasm-regsvr32/ –

2

Basta vedere il codice sorgente di Regsvr32.exe

+4

Ero sorpreso di scoprire che questo codice sorgente è attualmente disponibile con Visual Studio: http://msdn.microsoft.com/en-us/library/ms177531.aspx –