You know the scenario. You install a new application and another application on the system suddenly stops working. You make sure you installed the new application correctly and, perhaps, even reinstall the program. But every time you run an installation routine, something else on the system breaks. Welcome to DLL hell.

The DLL hell syndrome gets it name from the seemingly infinite variety of DLL combinations that can cause an application to break and often happens because of conflicts among multiple versions of the same DLL. Often, the culprit is an application artifact that uses an undocumented feature that a specific DLL version provides. In some cases, incompatibilities between old and new software versions that are running at the same time cause the problems. Whatever the cause, tracking down the offending DLL can be an IT nightmare.

Microsoft has created the DLL Help Database tool to help IT staff (administrators, developers, and Help-desk personnel) manage the DLL nightmare. The database contains a list of DLLs in common Microsoft applications. You can search the database in various ways, including by application and by DLL name. This approach can help you understand error messages that reference DLLs or solve problems caused by a new application installation overwriting a key DLL.

The DLL Help Database is not for the faint of heart. To test the DLL-finding feature, I searched the database for the very common mfc42.dll. I discovered 12 versions of the file, representing almost the entire history of Windows. When I drilled down through the individual file versions and looked at version 6.0.8665.0, I discovered the version in seven applications, ranging from Windows Me to Visual Studio (VS) 6 Service Pack 5 (SP5). Those seven applications used the same version of mfc42.dll with six different file-creation dates. But this example was simple compared to mfc42.dll version 4.2.0.6.6068, which I found in 35 applications with six different file creation dates, including two creation dates that were only 3 days apart.

In most cases, using newer versions of application-installed DLLs won't cause problems, and you can't do much about all the DLL versions that are written to the system 32 directory. But using the DLL Help Database as a diagnostic tool can give you an edge when you're trying to cope with the proliferation of DLL versions. The database is an interesting research tool that gives developers and dedicated IT folks a lesson in the evolution of Microsoft applications. While searching the database, I felt that sort of uncomfortable fascination that one feels when driving by a car accident: You hope that there are no injuries, but you can't help but wonder how things ended up like this.