Why DLL Hell isn't easily solved

I've been having quite a problem for a few weeks with my machine at home. It's been refusing to register ActiveX controls. Since we ship one as part of Hello and we've been adding all kinds of neat bells & whistles to it, this was causing some huge issues.

So I fired up regmon with a vengeance tonight, and proceeded to go over regsvr32 output until things made sense again.

I found an interesting reference to Napster, which had registered ATL.dll (ATL's a framework Microsoft provides for ActiveX). Of course, I'd removed Napster, but the registry still believed in Napster's continued existence. So Windows thought ATL belonged to Napster, but ATL.dll wasn't there. Ah.

(BTW, I believe this to be Napster 2.0, not the better Napster.)

So Windows thought Napster 2.0 was still around, and in fact, this file I very badly needed wasn't there at all. And I remembered some of the interesting claims Microsoft was making about WFP (Windows File Protection), that it supposedly solved this very problem.

But then my second thought was, sure, WFP works with full applications. But Internet Explorer is only one application. And quite simply, there's not much way to distinguish ATL.dll running in one IE plugin from one running in another. I suspect they don't try to link multiple copies of a DLL into the same process.

I typed "regsvr32 atl.dll" to fix things and I'm all better again.

But don't let anyone tell you DLL hell is all fixed. Not yet it isn't.

No comments:

Post a Comment