2009-10-22 46 views
1

我們有一個傳統的第三方程序在嘗試執行某些功能時失敗,出現「類未註冊」錯誤。有沒有辦法告訴它正在尋找什麼類?有時它會說「災難性錯誤」。如何識別缺失的依賴關係

嘗試依賴Walker靜態和分析,Kernal32.exe錯誤。我猜這是實例化失敗。它沒有透露任何遺漏的依賴關係。

ProcessMon沒有顯示任何失敗的嘗試訪問註冊表或特定的文件路徑。

花了好幾天的時間用一個調試器和工具試圖找出它是什麼文件。我們有一個正在運行的生產系統,我們可以使用非管理員用戶帳戶訪問。

第三方應用程序是用德爾福編寫的,如果這有所幫助的話。我們的通話應用程序是C++。

更新: 使用Sysinternals的Process Monitor和一個過濾器來縮小從不常見的自然註冊表讀取失敗,我能夠找到缺少的GUID並註冊相應的dll。

回答

1

它具有非常大的可能性COM問題。 Here是如何調試它的文章。基本上,使用RegMon。它將顯示COM讀取註冊表項,以查找類提供程序。

1

在Linux上,我會建議使用strace的或ltrace哪些系統調用程序正在進行......嗯,原來有strace的一個Windows版本的... :)

StraceNT

如果這樣的工作方式就像strace在Linux上一樣,你應該能夠看到什麼系統調用(以及參數傳遞給內核)...