Ups recien lo veo a este, pase por el otro foro y vi la solucion que plantearon. Ahora me gustaria comentar algunas cosas, que si no te pasaron te van a pasar. Primero que nada para registrar un COM vas a necesitar privilegios (no se si este es un problema para vos) que utilizando otros metodos, no son necesarios.
Bueno la primer cosa para comentar es que, si bien podes usar la shell, me parece mucho mas limpio invocar 'DllRegisterServer'.
Ejemplo:
Private Declare Function FreeLibrary Lib "kernel32" (ByVal hLibModule As Long) As Long
Private Declare Function LoadLibrary Lib "kernel32" Alias "LoadLibraryA" (ByVal lpLibFileName As String) As Long
Private Declare Function GetProcAddress Lib "kernel32" (ByVal hModule As Long, ByVal lpProcName As String) As Long
Private Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, ByVal hWnd As Long, ByVal Msg As Any, ByVal wParam As Any, ByVal lParam As Any) As Long
Private Function RegisterLib(ByVal sPath As String) As Boolean
Dim lLib As Long
Dim lProc As Long
lLib = LoadLibrary(sPath)
If Not lLib = 0 Then
lProc = GetProcAddress(lLib, "DllRegisterServer")
If Not lProc = 0 Then
Call CallWindowProc(lProc, 0&, 0&, ByVal 0&, ByVal 0&)
RegisterLib = True
End If
Call FreeLibrary(lLib)
End If
End Function
Ahora, el problema con este metodo y el de la shell es que ambos utilizan el registro y como comentaba anteriormente puede ser un problema en muchas situaciones.
Hay varias soluciones posibles pero obviamente va a depender de lo que estes haciendo, la primera y mas comun seria simplemente utilizar algun packager (eg: Molebox) , la otra mas standard es (siempre y cuando corras tu programa en XP SP2 o mayor) utilizar un manifest junto con alguna herramienta para automatizar el proceso de creacion como ser Make My Manifest. Por ultimo la que mas me gusta para cosas simples es una clase hecha por Arne Elster que permite crear objetos en base a su ruta, algo asi como lo que querias hacer inicialmente.
Links:
Registration-Free Activation of COM Components
http://msdn.microsoft.com/en-us/library/ms973913.aspxMake My Manifest
http://mmm4vb6.atom5.com/CreateObjectFromFile
http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=67459&lngWid=-10