Tengo una situación en la que una DLL administrada llama a algunas DLL no administradas. Conozco el CLSID de la DLL no administrada, ¿hay alguna forma de averiguar qué archivo binario contiene ese CLSID?¿Cómo encontrar una DLL dado un CLSID?
Respuesta
Normaly, sólo puede ir a:
HKEY_LOCAL_MACHINE \ SOFTWARE \ Classes \ CLSID \ "GUID"
y encontrar una clave llamada "InProcServer32" por ejemplo, y no habrá el valor por defecto que tiene la DLL. Esta es una manera simple de hacerlo.
Merece la pena señalar que, en función de cómo se haya instalado, puede encontrarlo en HKEY_CURRENT_USER \ SOFTWARE \ Classes \ CLSID. – user1454265
Lo que significa que 'HKEY_CLASSES_ROOT \ CLSID' es lo que se debe usar. – IllidanS4
Puede no solo buscarlo en el registro usando regedit y buscar la ruta binaria.
Basado en respuesta BobbyShaftoe podemos construir un script vbs simple que lee ese registro para nosotros:
Dll_RegPath = "HKEY_CLASSES_ROOT\CLSID\<GUID>\InProcServer32\"
pegar el siguiente a "test.vbs"
Sub Main
' used to find location of "System.Collections.ArrayList" progid dll
Const csGUID = "{6896B49D-7AFB-34DC-934E-5ADD38EEEE39}"
MsgBox srGetDllPathByGUID(csGUID)
End Sub
Function srGetDllPathByGUID(sGUID)
Const csRegPath = "HKEY_CLASSES_ROOT\CLSID\<GUID>\InProcServer32\"
Dim oShell: Set oShell = CreateObject("WScript.Shell")
Dim sReg: sReg = Replace(csRegPath, "<GUID>", sGUID) ' build str
srGetDllPathByGUID = oShell.RegRead(sReg)
Set oShell = Nothing ' clean up
End Function
Call Main
También puede encontrar ProgId por:
ProgID_RegPath = "HKEY_CLASSES_ROOT\CLSID\<GUID>\ProgID\"
- 1. Obteniendo CLSID para un archivo DLL?
- 2. Dado un DLL COM, extraer todas las clases CLSID y el nombre de interfaz correspondiente
- 3. Encontrar una variable con un valor dado en VS2008
- 4. Dado un objeto javascript arbitrario, ¿cómo puedo encontrar sus métodos?
- 5. ¿Cómo encontrar métodos anotados en un paquete dado?
- 6. Encontrar un número primo después de un número dado
- 7. ¿Tiene GDI + codificadores de imagen estándar CLSID?
- 8. Usando LINQ, ¿cómo puedo encontrar un objeto con un valor de propiedad dado de una lista?
- 9. ¿Cómo encontrar la convención de llamadas de un tercero dll?
- 10. Encontrar todos los marcadores dentro de un radio dado
- 11. ¿Encontrar un archivo jar dado el nombre de clase?
- 12. ¿Encontrar k vecinos más cercanos para un vector dado?
- 13. Encontrar la fecha para un número de semana dado
- 14. ¿Modificar un número dado para encontrar la suma requerida?
- 15. ¿Cómo encontrar todos los vecinos de un punto dado en una triangulación de delaunay usando scipy.spatial.Delaunay?
- 16. Encontrar problemas de seguridad en un código dado
- 17. Necesito una API para encontrar el nombre completo de una empresa dado un símbolo de cotización
- 18. ¿Cómo vincular un .DLL estáticamente?
- 19. Al migrar de Subversion a Git, ¿cómo puedo encontrar un compromiso dado un número de revisión?
- 20. ¿Cómo puedo encontrar un nombre de archivo, dado un puntero ARCHIVO?
- 21. PHP 5.3.2, ¿Dónde puedo encontrar php5apache2_2.dll?
- 22. Encontrar el número en una matriz que está más cerca de un número dado
- 23. Dado un gran conjunto de vértices en un polígono no convexo, ¿cómo puedo encontrar los bordes?
- 24. ¿Cómo obtener UIView dado un CGPoint?
- 25. ¿Cómo encontrar un diccionario bueno/óptimo para zlib 'setDictionary' al procesar un conjunto dado de datos?
- 26. Dado un tiempo, ¿cómo puedo encontrar el tiempo hace un mes
- 27. ¿Cómo obtener una instancia de Excel o un CLSID de instancia de Excel utilizando la ID del proceso?
- 28. Encontrar la ruta física de un dll ISAPI
- 29. .NET - ¿Cómo depurar una DLL?
- 30. ¿Dónde puedo encontrar el System.Linq.Dynamic dll?
¿Está tratando de hacer esto programáticamente o ad hoc? Es decir, ¿necesita un programa para hacerlo por sí mismo o es algo que de vez en cuando debe hacer como desarrollador? –