¿Porqué no se instala una DLL con Regsvr32 /i?

Cogemos y ejecutamos el comando regsrv /i MiDll.dll y patapún: "MiDll.dll was loaded, but de DllInstall entry point was not found. This file can not be registered." ¬¬ Um WTF?

Una dll debe ser escrita de cierta forma para que se pueda registrar por el comando regsvr32. No es tan sencillo como coger una dll al azar y esperar que funcione. Como ya vimos, el comando regsvr32 necesita un par de cosillas para poder registrar una dll. Si no se ha tenido en cuenta ese tipo de cosas, no se podrá encontrar el punto de entrada para que regsvr32 funcione y obtendremos ese error.

El parámetro /i le dice a regsvr32 que busque  el punto de entrada conocido como DllInstall. Esta función realiza la instalación de la dll, pero como es una función exportada por una Dll, puede hacer cualquier cosa que queramos (o nada en absoluto).

Y es que coger una dll cualquiera e intentar registrarla con regsvr32 es como ir por la calle, encontrarte un caramelo pegado en el suelo, cogerlo, metértelo en la boca y esperar que sepa bien ....

Vamos a ver almas de cántaro. El primer resultado sobre qué hace regsvr32 nos lleva a un artículo de la base de conocimiento de Microsoft que explica qué es lo que hace, incluso contiene un ejemplo que emula a regsrv32 para que podamos depurar nuestra dll.

Espero que sirva.

Juan María Laó Ramos.

Un pensamiento en “¿Porqué no se instala una DLL con Regsvr32 /i?

  1. El Bruno

    Otra forma de explicarlo es > que RegSvr32 solo instala DLLs COM. Un archivo con extensión Dll no tiene porque ser una dll COM, también puede ser un ensamblado .net, o inclusive un archivo con una foto de mi abuela renombrado como dll. RegSvr32, solo se aplica en escenarios COM y … por favor dejemos de alentar a los escenarios COM !!!

    Saludos

Los comentarios están cerrados.