我遇到过托管DLL调用某些非托管DLL的情况。我知道非托管DLL的CLSID,有没有办法找出包含该CLSID的二进制文件?
发布于 2009-05-22 13:13:20
Normaly,你可以直接去:
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\"GUID“
例如,找到一个名为"InProcServer32“的键,就会有具有该DLL的默认值。这是一种简单的方法。
发布于 2009-05-22 13:11:32
你能不能仅仅使用regedit在注册表中搜索它并查找二进制路径。
发布于 2015-02-08 17:05:55
基于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\"https://stackoverflow.com/questions/897743
复制相似问题