2010-12-22 36 views
1

我正在使用一個應用程序,它工作的很完美。經過幾個月沒有使用它,我試圖運行它,它不起作用。它顯示一個消息框,指出它不能實例化一個COM對象。在應用程序中跟蹤COM對象錯誤

做任何知道如何跟蹤COM對象中的錯誤?

回答

1

您可以使用ProcessMonitor並嘗試查找可能不正確的註冊表項。 另一種選擇是使用http://www.moduleanalyzer.com,它攔截顯示所有創建的COM對象和返回值的CoCreateInstance。

+0

我試過ProcessMonitor,但真的不明白它是如何幫助我的。我看了註冊表鍵,一切似乎都沒問題。問題被模塊分析器檢測到,顯示我的COM錯誤,我能夠修復再次註冊一個DLL。它看起來像一個對象的新版本被安裝,舊的應用程序要求舊的接口,它不再有效的對象。註冊正確的對象後,應用程序可以順利運行! – 2010-12-22 20:42:52

1

運行依賴COM對象DLL上的工具來驗證它具有所有必需的dll,重新註冊COM dll/exe。

調試/日誌中的任何HRESULTS?公寓模型的任何變化?

一旦您設置了公寓類型,您便無法更改公寓類型。因此,如果對象無法使用其中一個模型,並且您嘗試CoCreate它,它將會失敗。這就是爲什麼你永遠不會從DLL主線程中調用CoInit的原因。

+0

DebugView不顯示任何錯誤。是的,我知道CoCreate在這種情況下會失敗,但我想知道哪個對象失敗了CoCreateInstance。 – 2010-12-22 18:57:21