2015-09-17 101 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

非常感謝您的詳細解答。 –