web-dev-qa-db-fra.com

Comment trouver A DLL donné un CLSID?

J'ai une situation dans laquelle un fichier géré DLL appelle une DLL non gérée. Je connais la CLSID de la DLL non gérées, existe-t-il un moyen de savoir ce que le fichier binaire abrite que CLSID?

29
dudemonkey

Normaly, vous pouvez simplement aller à:

HKEY_LOCAL_MACHINE\LOGICIEL\CLASSES\CLSID\"GUID"

Et trouvez une touche appelée "inprocserver32" par exemple et il y aura la valeur par défaut qui a la DLL. C'est un moyen simple de le faire.

36
BobbyShaftoe

Pouvez-vous ne pas simplement le rechercher dans le registre en utilisant Regedit et recherchez le chemin binaire.

7
Simon

Basé sur Bobbyshaftoe Répondre, nous pouvons créer un script de VBS simple qui lit ce registre pour nous:

Dll_RegPath = "HKEY_CLASSES_ROOT\CLSID\<GUID>\InProcServer32\"

Coller les éléments suivants à "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

Vous pouvez également trouver PROGID par:

ProgID_RegPath = "HKEY_CLASSES_ROOT\CLSID\<GUID>\ProgID\"
3
n3rd4i