2015-09-17 62 views
0

我对这个问题的含糊性表示歉意。如何解决COM组件问题?

在将应用程序迁移到新服务器环境的过程中,为应用程序公开API的COM组件(.dll)文件已停止工作。

有没有什么办法可以排除COM组件的故障?是否有COM组件记录错误的标准方式(Windows事件查看器中没有事件)?我能以任何方式“检查”一个组件吗?

我已经成功地使用regsvr32.exe注册了组件(除了创建一些Windows注册设置之外,我不知道这实际上做了什么)。

Martijn

+0

它是您写的COM组件还是您使用的COM组件? – Bruce

+0

@Bruce谢谢你的回复。这是一个由第三方编写的COM组件,不幸的是它不能提供帮助。两种环境都(看起来)是相同的。 –

回答

1

这种形式的故障诊断有2个部分。

首先使用SYS内部的procmon。 SYS internals这显示了尝试打开COM服务器的进程的strace样行为。

查看失败的函数调用。

接下来我会尝试直接在调试器中加载COM控件,看不到任何故障有

为从procmon结果将显示在注册表中的位置和文件位置其中的关键是加载COM对象。

失败可能是: -

  1. 安装而不是所有用户的一个用户。这将无法找到命名对象
  2. 错误的体系结构。如果prog.exe转到64位,它将无法加载32位com DLL
  3. 缺少依赖关系。更多的DLL可能是无法加载的 - 这些会在procmon trace中显示
  4. 配置数据。如果com DLL需要进一步配置,那么这将显示在procmon中的事件中,或者在调试器中出现错误。

您可以在调试器中加载任何DLL。调试符号使它更容易,但我们试图发现错误,它在调用中的例外

+0

谢谢!通过'试图打开COM服务器',你的意思是客户端连接到.dll,因为它在哪里?调试控件是否需要COM组件的调试版本,或者该术语在此不适用?我必须承认,我几乎不了解COM。 –

+0

非常感谢您的详细解答。 –