我们有一个遗留的第 3 方程序在尝试执行某些功能时失败并出现错误“类未注册”。有没有办法告诉它正在寻找什么类(class)?有时它会显示“灾难性错误”。
静态地尝试了 Dependency Walker 和分析,Kernal32.exe 错误。我猜这是实例化失败。它没有显示任何缺失的依赖项。
ProcessMon 没有显示任何访问注册表或特定文件路径的失败尝试。
花了几天时间使用调试器和工具试图弄清楚它是什么文件。我们有一个正在运行的生产系统,我们可以使用非管理员用户帐户访问它。
如果有区别的话,第 3 方应用程序是用 Delphi 编写的。我们的调用应用程序是 C++。
更新: 使用 Process Monitor从 Sysinternals 和一个过滤器来缩小自然注册表读取失败的异常,我能够找到丢失的 GUID 并注册相应的 dll。
最佳答案
很有可能是 COM 问题。 Here有一篇关于如何调试它的文章。基本上,使用 RegMon。它将显示 COM 读取注册表项,尝试查找类提供程序。
关于c++ - 如何识别缺失的依赖项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1607402/