У меня есть ситуация, когда управляемая DLL вызывает некоторую неуправляемую DLL. Я знаю CLSID неуправляемой DLL, есть ли способ узнать, какие двоичные файлы хранятся в CLSID?
Как найти DLL с учетом CLSID?
Ответ 1
Нормальный, вы можете просто перейти к:
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\ "GUID"
И найдите, например, ключ, называемый "InProcServer32", и будет значение по умолчанию, имеющее DLL. Это простой способ сделать это.
Ответ 2
Не можете ли вы просто найти его в реестре с помощью regedit и искать двоичный путь.
Ответ 3
Основываясь на ответе BobbyShaftoe, мы можем создать простой vbs script, который читает этот реестр для нас:
Dll_RegPath = "HKEY_CLASSES_ROOT\CLSID\<GUID>\InProcServer32\"
Вставьте следующее в "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
Вы также можете найти ProgId:
ProgID_RegPath = "HKEY_CLASSES_ROOT\CLSID\<GUID>\ProgID\"