February 24, 1997
A new weapon exists in the battle of duplicate DLLs
The dynamic link library (DLL) wars continue. Those of you who read this column regularly may remember my series of four columns from Sept. 2 to Sept. 23, 1996, about DLL conflicts. Many inexplicable Windows 95 crashes -- some say most crashes -- are due to differing versions of DLL files installed by different applications.
Until Microsoft issues a bulletproof solution to the problem of conflicting DLLs (and I still haven't heard of any official plan), you can use a freeware tool sent to me by software developer John R. Ball of Out on a Limb Computing. This utility, called Find Dups.exe, searches all your hard drives for DLLs with the same name. It then displays a table with all instances of duplicate DLLs, sorted by name.
Although other choices are available, Ball's utility is uniquely attuned to some peculiar features of Windows 95. For example, FindDups doesn't flag duplicate DLLs that exist in the System and Sysbckup folders. It knows that Windows 95 uses Sysbckup to refresh any essential System DLLs that are changed or corrupted.
FindDups is smart enough to read and display the internal version number of DLLs that support them. This internal numbering system is usually a more reliable way to determine which of two DLLs is newer than checking their date stamps, which are easily changed. (You can check for an internal version number without using a utility by right-clicking a DLL in Explorer, then clicking Properties, Version.)
When you've identified two DLLs with the same name but different version numbers, a double-click in FindDups on either file name opens an Explorer window focused on that folder and file, so you can examine the situation firsthand.
When you've found such DLLs, caution is in order. I recommend that you read all four of my September columns before changing anything. (You can read those columns on InfoWorld Electric or obtain back issues of InfoWorld from our customer-service department at [847] 647-7925.) For those who can't wait, however, the general rule is that you want in your Windows or System folders only the newest version of a DLL file. There is no reason to have a DLL in both places, because Windows looks in both folders when a DLL is needed.
Older DLLs loaded by applications can prevent a newer DLL with the same name from being loaded later. For this reason, you should theoretically rename older DLLs to something like MYDLL.OLD. Never change more than one DLL at a time. Test everything, and if an application complains, you can restore a DLL's original name to recover.
However, exceptions abound. Duplicate WINSOCK.DLL files in different folders should be left alone. (Win 95's Sysbckup destroys WinSock files in the System folder used by competitors' Internet browsers, as I revealed in my Sept. 25, 1995, column, "How Microsoft disables rivals' Internet software," page 42.)
The Microsoft applications Office 4.x, Word 6.0, Excel 5.0, PowerPoint 4.0, Project 4.0, and Visual FoxPro 3.0 -- unbelievably -- require older versions of some Microsoft DLLs and won't work with newer versions. If you are running these Microsoft applications, there is no good solution. Similarly, some applications require BWCC.DLL 2.0, whereas others require 1.x.
A zipped version of FindDups can be downloaded from InfoWorld Electric.
Brian Livingston is the co-author of Windows 95 Secrets Gold and four other Windows books (IDG Books). Send tips to brian_livingston@infoworld.com or fax: (206) 282-1248.
Missed a column? Go back for more.
Copyright © 1997 by InfoWorld Publishing Company