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?
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.
Pouvez-vous ne pas simplement le rechercher dans le registre en utilisant Regedit et recherchez le chemin binaire.
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\"