如何判断库是COM还是DCOM?

时间:2015-06-19 14:37:58

标签: dll com dcom

我已经完成了尝试重新创建一个对原始DLL稍有修改的DLL的任务,如果另一个程序运行,它将被执行。基本上是DLL的模拟版本,用于测试/模拟更大系统的其他部分。

我正在搜索是否有任何方法来检查库是COM还是DCOM但是没有找到任何库。我是aware of the differences,但给定了一个DLL库,如何判断它是COM还是DCOM库

此外,有没有办法用更新的技术交换COM / DCOM库,但不能更改调用COM / DCOM库的代码部分?

2 个答案:

答案 0 :(得分:2)

哇,你在这里上学了!

如果我没记错,任何有效的COM对象也可以参与DCOM。是不是在操作系统级别完成远程过程调用的接线?

来自https://msdn.microsoft.com/en-us/library/aa295360(v=vs.60).aspx

  

一旦COM适应跨网络工作,那么任何接口都可以   没有绑定到本地执行模型(某些接口具有固有的   依赖于本地机器设施,例如那些绘图界面   其方法具有作为参数的设备上下文句柄)   具有分发的能力:接口消费者会   发出给定接口的请求;可以提供该接口   通过在不同的上运行(或运行)的对象的实例   机。 COM内部的分发机制将连接   消费者以提供方式调用方式提供给提供者   消费者会出现在提供商端,他们会在哪里   执行。然后将任何返回值发送回消费者。   就所有意图和目的而言,分配行为是透明的   消费者和提供者。

     

现在存在各种各样的COM。 DCOM(用于“分布式COM”),是   随版本4.0开始的Windows NT版本一起提供。以来   1996年末,它也可用于Windows 95及其版本   衍生物。在这两种情况下,DCOM都包含一组替换和   附加的DLL,带有一些实用程序,提供本地和   远程COM功能。因此,它现在是一个固有的部分   基于Win32的平台,将在其他平台上提供   其他组织随着时间的推移。

答案 1 :(得分:2)

单独使用可执行代码你无法分辨它是什么,除非它附带了代理/存根dll,你可以认为它是DCOM。

可见的差异在于物品的注册方式。根据注册的实施方式,深入了解注册流程可能很容易,也可能不那么容易。如果注册参数是在代码中手工粘合的,那么你必须以更难的方式对其进行反向工程。如果注册使用存储在资源中的.rgs文件,则可以将其解压缩并查看注册的完成方式。无论如何,最好的办法是使用虚拟机并导出其注册表,然后注册该组件,再次导出注册表并查看差异 - 添加了什么。