DLL Hell

DLL Hell is where loading one program breaks another program. Basically, any time an application (or service patch) replaces (or loads) an executable used by another application, there is a risk. It doesn't matter if the executable is an exe, vxd, dll, or something else, the risk is the same, and you, the user, have no control over what is happening.

To make matters worse (much worse), when your clients install software that you've written, your software might break other, un-related, applications on the clients machine. This is particularly true if you've used a Microsoft compiler. (mfc42.dll is known to cause this type of problem.) Of course, you and your clients have no control at all over what happens.

Microsoft implies that this is some kind of a generic problem that their new .net initiative will solve. But this was never a problem with DOS or unix. In fact, Microsoft windows is the primary cause of the problem. I find it irritating that Microsoft is taking credit for the solution without admitting that they were wrong all along.

I will use explorer.exe as an example. This application actually displays your desktop, the Start menus, all your icons, the "file manager", and other basic functions. As of Feb 2001, Microsoft admitts to 15 different English versions (to see them, you will need to enter explorer.exe in the Filename field and press enter/submit). However, several of these "versions" come in different sizes. Some variation can be expected between Macintosh (PPC) and PC versions of the same product, but this should also be reflected in the product version number, not just the file size.

A specific feature that I find extremely irritating is the unexpected change from readable menus to scrolling menus. The original Windows 95 operating system provides a multi-column Start menu - Windows 95c, Windows 98, and Windows NT 4 are usually cursed with scrolling menus. If your system has multi-column menus, then loading Internet Explorer, Office 2000, or some other application could change the multi-column menus into scrolling menus. (Notice the hedging words, I've seen several combinations of products and functionality.)

I am not 100% sure about the version numbers, there are 15 in all and I've only been able to test a few, but it appears that systems with explorer.exe version 4.0.x display multi-column menus, those with version 4.72.x or higher display scrolling menus. However, if SHDOC401.DLL is on your machine, then it is possible to change back to multi-column menus.

The problem is that you have no control over which versions of these products are on your machine. explorer.exe is installed by each operating system, most of the OS service releases, Internet Explorer, Office 2000 Developer, Visual Basic, BackOffice, SMS, Visual Studio, and many other supposedly unrelated applications. (In their attempt to control the browser market, Microsoft requires you to install Internet Explorer when you install other products, such as VisualBasic and Office 2000. As a result, explorer.exe, and countless other dll's, are changed without your permission or knowledge.)

In addition, since SHDOC401.DLL is loaded by IE 5, Office 2000 SR1, and a few other apps, some systems will allow you to change the configuration and others won't.

To make matters worse, the version of explorer.exe distributed with some products is not consistent. Even 2 copies of the same explorer.exe version might be different sizes.

explorer.exe versions installed with IE 4.01
Version Size Date  
4.72.2106.4176,40011-08-97 These 2 have the same version number
and date, but different sizes.
4.72.2106.4169,23211-08-97
4.0.1381.4 234,25605-01-97  


References


Author: Robert Clemenzi - clemenzi@cpcug.org
URL: http:// cpcug.org / user / clemenzi / technical / Languages / DLL_Hell.htm