30

マネージ DLL がアンマネージ DLL を呼び出す状況があります。アンマネージ DLL の CLSID はわかっていますが、その CLSID を格納しているバイナリ ファイルを特定する方法はありますか?

4

4 に答える 4

37

通常、次の場所に移動できます。

HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\"GUID"

たとえば、「InProcServer32」というキーを見つけると、DLL を持つデフォルト値が表示されます。これは簡単な方法の 1 つです。

于 2009-05-22T13:13:19.547 に答える
7

regedit を使用してレジストリで検索し、バイナリ パスを探すことはできませんか。

于 2009-05-22T13:11:32.373 に答える
3

BobbyShaftoe の返信に基づいて、そのレジストリを読み取る単純な vbs スクリプトを作成できます。

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\"
于 2015-02-08T09:05:55.337 に答える