怎样区分DLL和COM,我现在有一个后缀为.DLL的文件。但是我不知道这是个DLL还是COM
请问怎么区分出来
谢谢
请问怎么区分出来
谢谢
解决方案 »
- 使用Detours HOOK API防DLL注入
- 关于VC SOCKET编程的几点疑问
- 用FindWindow找到父窗口后,发送点击消息,弹出新的模态子窗口,此时用FindWindow找不到子窗口,EnumWindows也不行,如何解决
- 在ActiveX控件中添加一事件,但后来感觉不应该添加,怎么去掉这一事件。(通过界面删除,不在代码中删除)
- 在线急等,关于socket编程
- 如果表中的项是数组形式怎么办
- 爱情、金钱、理想---------我徘徊、我郁闷。
- 刚学vc请问如何设置CListCtrl中每行(或每列)的不同颜色
- ActiveX安装问题
- 高薪急聘!!研发工程师、维护服务工程师(西安、成都、上海),08年10月31号前有效
- 如何调整控件的tab顺序?
- 请教:用VC6将DSP文件导出makefile文件,可以用 cmd命令行来实现吗?如何做 谢谢?找了MSDN帮助 未果。
regsvr32 a.dll若出现“a.dll中的DllRegisterServer成功”的对话框,则说明肯定是个COM如果失败,则有一定可能性为COM,继续判断的方式很多(比如用dumpbin查看导出函数表,如果存在这么几个函数:DllCanUnloadNow,DllGetClassObject,那基本上可以肯定就是个COM)如果这个dll文件是某个需要安装的应用程序的组成部分,那么还可以到注册表中查找这个dll是否被注册,查找关键字是该dll所在位置的全路径
导出了DllRegisterServer(),DllUnregisterServer()函数的是COM
没有导出的是DLL
DllCanUnloadNow
DllGetClassObject
DllRegisterServer
DllUnregisterServer
但是现在我看了一下注册表下面有这个注册相
但是在DEPENDS中却看不到以下这四个函数
DllCanUnloadNow
DllGetClassObject
DllRegisterServer
DllUnregisterServer晕了
盼各位积蓄解答
dumpbin -exports 你的dll.dll的结果贴出来,帮你看
Copyright (C) Microsoft Corp 1992-1998. All rights reserved.
Dump of file C:\Mytest.dllFile Type: DLL Section contains the following exports for Mytest.dll 0 characteristics
42FB0912 time date stamp Thu Aug 11 16:15:14 2005
0.00 version
1 ordinal base
9 number of functions
0 number of names ordinal hint RVA name 1 000059B0 [NONAME]
2 000057F0 [NONAME]
3 000056C0 [NONAME]
4 00005730 [NONAME]
5 0000B6D0 [NONAME]
6 00005610 [NONAME]
7 00005650 [NONAME]
8 00005690 [NONAME]
9 000056A0 [NONAME] Summary 6000 .data
6000 .rdata
2000 .reloc
1000 .rsrc
1B000 .text
1 (0x0001)
2 (0x0002)
3 (0x0003)
4 (0x0004)
5 (0x0005)
6 (0x0006)
7 (0x0007)
8 (0x0008)
9 (0x0009)
DllCanUnloadNow
DllGetClassObject
DllRegisterServer
DllUnregisterServer
那个名字就是NONAME
这个DLL是以前我写的
但是后来辞职了
今天偶尔看了以下新的版本
竟给弄成了这个样子不知道怎么搞得
已经说的这么清楚了
com是一种概念,dll是一种文件格式,两个没有可比性
以下这些概念是 COM 的基础: 接口 — 对象用来公开其功能的机制。
IUnknown — 作为所有其他接口之基础的基本接口。它通过 COM 实现对引用计数和接口查询机制的运行。
引用计数 — 对象(严格地说是接口)用来决定它何时不再被使用并因此可以自由地移除自身的技术。
QueryInterface — 用于查询对象的给定接口的方法。
封送处理 — 使对象能够跨越线程、进程和网络边界使用并允许其具有位置独立性的机制。
聚合 — 一种使一个对象可以利用其他对象的方法。
假设其Dll文件名称为 xx.dll
在程序中书写如下代码
#import "xx.dll"
编译此程序,查看其输出目录中是否含有 xx.tlh 的文件。如果发现此文件,就说明此Dll含有类型库信息,从而确定其是 Com