怎样从DLL文件中得到CLSID

ljg963419 2005-03-08 05:20:57

目的:1从DLL文件中读取它的CLSID(每个DLL文件的CLSID是永远不变的)
2根据CLSID来判断是不是本机生成的(因为每台机器生成的CLSID都与机器有关,
而且其它机器通过这个CLSID就可以找到些机器,如导出的组件就可以自动找到主机)
3通过CLSID在注册表中找到ProgID
参考:我知道VC中有CLSIDFromProgID和ProgIDFromCLSID可以实现1和3,但不知VB是
否可以实现.
QQ:38956002
...全文
568 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
happywqw 2005-03-11
  • 打赏
  • 举报
回复
在VBaccelerator的代码里已经实现了GUID的生成算法,不过是不可逆的!
僵哥 2005-03-09
  • 打赏
  • 举报
回复
一楼上面已经介绍一CLSIDFromProgID和ProgIDFromCLSID,那我就介绍一种
ProgID and CLSID from DLL File:

Reference:TypeLib Information TLBINF32.DLL(PATH:SystemDirectory)

Dim TLIApp As TLI.TLIApplication
Dim TLBInfo As TLI.TypeLibInfo
Dim TypeInf As TLI.CoClassInfo
Set TLIApp = New TLI.TLIApplication
Dim ProgID As String
Dim CLSID As String

Set TLBInfo = tliap.TypeLibInfoFromFile("e:\EasyDCOMObject.DLL")

For Each TypeInf In TLBInfo.CoClasses
ProgID = TypeInf.Name
CLSID = TypeInf.Guid
Debug.Print ProgID
Debug.Print CLSID
Next
------------------------------------------------------------------
Dim TLIApp As Object
Dim TLBInfo As Object
Dim TypeInf As Object
Set TLIApp = CreateObject("TLI.TLIApplication")
Dim ProgID As String
Dim CLSID As String

Set TLBInfo = tliap.TypeLibInfoFromFile("e:\EasyDCOMObject.DLL")

For Each TypeInf In TLBInfo.CoClasses
ProgID = TypeInf.Name
CLSID = TypeInf.Guid
Debug.Print ProgID
Debug.Print CLSID
Next
AprilSong 2005-03-08
  • 打赏
  • 举报
回复
这里的代码讲得很详细了~

http://www.ccw.com.cn/htm/app/aprog/01_5_11_2.asp
TechnoFantasy 2005-03-08
  • 打赏
  • 举报
回复
How To Call CLSID And ProgID Related COM APIs in Visual Basic
http://support.microsoft.com/kb/183544/EN-US/

介绍了怎么在VB中调用CLSIDFromProgID和ProgIDFromCLSID

至于2我估计不可能,因为这个GUID生成的算法没公开,我估计即使公开了也应该是一种不可逆的算法。
SQLDMO.dll是个好东西,ASP.NET利用它可以实现在线备份、还原数据库等各种功能。近日有客户要求为其在后台添加一个管理数据库的功能。于是就出现了这篇文章。 由于客户的数据库和WEB服务不再同一台服务器,当我们把网站部署在服务器上以后,运行程序,提示如下错误: Retrieving the COM class factory for component with CLSID {10020200-E260-11CF-AE68-00AA004A34D5} failed due to the following error: 80040154. 而客户又不想在这台电脑安装MSSQL,所以我们只需要在没有安装MSSQL的电脑上注册SQLDMO.DLL组件。 第一步:首先将msvcr71.dll, SQLDMO.DLL, Resources\2052\sqldmo.rll,Resources\1033\sqldmo.rll 拷贝到C:\Program Files\Microsoft SQL Server\80\Tools\Binn目录。 下载SQLDMO文件 第二步:打开开始,在运行输入 regsvr32 "C:\Program Files\Microsoft SQL Server\80\Tools\Binn\sqldmo.dll" 注册sqldmo.dll。 正常情况下,经过以上两个步骤,网页就应该可以访问了的。 但是我们经过以上两次操作后,访问网页依然提示如下错误: Retrieving the COM class factory for component with CLSID {10020200-E260-11CF-AE68-00AA004A34D5} failed due to the following error: 80070005. 后经过一段时间的检查,我们发现C:\Program Files\文件夹仅有Administrator和System的控制权限,而没有其他任何用户的权限,因此我们为Microsoft SQL Server文件夹增加上Network Service 的读取权限。 至此,问题得到解决!

863

社区成员

发帖
与我相关
我的任务
社区描述
VB COM/DCOM/COM+
c++ 技术论坛(原bbs)
社区管理员
  • COM/DCOM/COM+社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧