2009-02-06 74 views
1

我繼承了兩座複雜的COM對象。一個是從另一個派生出來的(據稱是)GUID等等,全都改變了,所以他們不應該干涉。它們確實會干擾,到目前爲止我們的調試還沒有發現罪魁禍首 - 我們已經完成了註冊表比較和源代碼差異,並通過SCCS checkins進行了查看。顯然我們錯過了一些東西,但它們足夠龐大而複雜,我並不感到驚訝。分析COM對象註冊表干擾的好工具?

是否有一個工具可以幫助,也許通過檢查COM對象的良好行爲或檢測兩個COM對象之間的衝突或分析註冊表?

回答

6

如果你有Visual Studio中,你可以使用regcap拉出註冊表項,然後就可以通過一個腳本收集GUID的列表。您也可以使用OLEView(也可以從Visual Studio)來執行此操作。

還有其他免費工具可以做到這一點:
如果您有VB,MMM(Make My Manifest)可以被吸引到做到這一點。
熱或牛油從維克斯3.0和2.0,分別還可以做這樣的事情。

輸出格式在每種情況下都會有所不同,但它足以將相關信息收集到文本文件中。

2

不確定自動化工具,但在這種情況下我會做的第一件事是運行RegEdt32.exe並查看HKEY_CLASSES_ROOT - 此時您應該能夠看到每個COM對象,並且會給你ClassID。然後,您可以在HKEY_CLASSES_ROOT/CLSID中查找這些CLSID以查找類型庫GUID。這是一種手動方法,但它應該告訴你所有你需要知道的衝突。

另一個想法,也許他們都共享一個共同的基礎DLL。您可以檢查此使用Dependency Walker