开发者

How to Identify a Missing Dependency

We have a legacy 3rd party program that is failing with the error "Class Not Registered" when it tries to execute certain functionality. Is there a way to tell what class it's looking for? Sometimes it says "Catastrophic error" instead.

Tried Dependency Walker statically and profiling, Kernal32.exe 开发者_JAVA百科errors. I'm guessing that's the instantiation failing. It didn't reveal any missing dependencies.

The ProcessMon didn't reveal any failed attempts to access the registry or a particular filepath.

Have spent several days with a debugger and tools trying to figure out what file it is. We have a running production system that we can access with a non-Admin user account.

The 3rd party app was written in Delphi if that makes a difference. Our calling app is C++.

Update: Using the Process Monitor from Sysinternals and a filter to narrow the natural registry read failures from the unusual ones I was able to find the GUID that was missing and register the corresponding dll.


It's with a very large probability a COM problem. Here's an article on how to debug it. Basically, use RegMon. It will show COM reading registry keys, tyring to find the class provider.


On linux, I would suggest using strace or ltrace to see what system calls the program is making... Well, it turns out there is a Windows version of strace... :)

StraceNT

If this works like strace does on Linux, you should be able to see what system calls (and the paramaters are being passed to the kernel)...

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜