Подтвердить что ты не робот

Как найти DLL с учетом CLSID?

У меня есть ситуация, когда управляемая DLL вызывает некоторую неуправляемую DLL. Я знаю CLSID неуправляемой DLL, есть ли способ узнать, какие двоичные файлы хранятся в CLSID?

4b9b3361

Ответ 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\"