|
There
are any number of programs available that will claim
to search your hard drive and remove any duplicate
files. Most of these programs do a pretty good job,
but it's worth having an understanding of what impact
removal of system files and application components
can have upon your computer.
Sanx's pocket guide to DLLs, OCXs
and TLBs
DLLs, OCXs and TLBs are sections of
code that exist in a different file to the main program
file - the executable.
DLLs (Dynamic Link Libraries): Programmers
often use DLLs when they have sections of code they
wish to share between applications, but don't want
to duplicate in each application. Placing this code
in a DLL allows multiple applications to access it
whilst keeping the overall application size down.
OCXs (OLE Component Extensions): OCXs
tend to be visual components or objects. Where a programmer
wants to use a certain style of button or list box,
he'll use an OCX to make it. This saves him from having
to write all the code to display the button manually.
He just puts it there using the OCX, and all the actions
come pre-packaged without him having to worry about
coding what happens to the button image when the user
clicks his mouse on it.
TLBs (Type Libraries): Type libraries
are basically definitions of data structures - methods
in which information is stored and transfered. Whilst
these are usually stored in the application itself,
having thm stored in a separate file allows the programmer
to use the same type definitions across more than
one program.
So what happens when a programmer
uses one of these files and you install their program
on your computer? In the vast majority of cases, the
process is seamless. The setup program copies down
the files, registers them properly and the application
works without any thought or other configuration required.
Problems can occur however, when different applications
use the same components.
Whilst this is not an issue for custom-written
DLLs and OCXs (i.e. ones the programmer has written
themselves), there can be a problem when the programmer
uses stock components. Visual Basic comes with a whole
bunch of these, as does Visual C++ and a whole number
of other programming languages. The problem arises
because the programmer cannot automatically assume
that the machine on which the software is going to
be installed has all the pre-requisite components
already on it. And even if it does, he cannot assume
that all the components will be the right version.
Because of this, he will usually package
up into his setup routine all the components the application
will require. Now, this may end up containing duplicates
of what is already on the target machine.
To cope with multiple versions, Windows
has a built-in way of handling calls to external components.
If an application makes a call to a certain DLL (let's
call it sanx.dll) Windows will first look in the directory
in which the application resides, and then in the
\Windows\System32 directory.
Should the programmer need a specific
version of a component, he can install it in the application
directory. If it's going to be a common one, he can
put it in the System32 folder.
The issue really starts getting fuzzy
when you realise that in addition to the component
actually having to be on the machine, it also needs
to be registered. Registration of a component involves
writing a whole bunch of GUIDs (Globally-unique identifiers)
to the registry. Registration basically makes the
component available to applications under a certain
name and identifier without the programmer having
to reference it by path and filename - quite a good
thing since the programmer doesn't know in advance
into what directory you've installed Windows or what
directory you're going to put his program. Because
of this, it's quite possible to have two or more identical
components in different places on the machine, with
different identifiers. Removing one will probably
break the program associated with it.
Let's say sanx.dll exists on your
machine in two places; your Windows\System32 directory
and in the directory into which you've installed Sanx's
ReallyWonderfulDoEverything application - the program
that uses sanx.dll. Which version of sanx.dll will
it be using? Well, that depends on where the registered
version of the component is - something that can be
devilishly hard to find. Even if both versions are
registered, you'd need to know which of the two identifiers
the program is using. Removal of the wrong copy of
sanx.dll (i.e. the registered one) will end up breaking
Sanx's ReallyWonderfulDoEverything. And that's a bad
thing.
-- End pocket guide --
Thanks for reading this far!
So what does all of the textual garbage
above mean? Basically, it means be very careful. Most
disk cleaners will have some functionality that will
search down any unregistered components, and look
for registration entries that point to components
that no longer exist.
Every good disk cleaner will also
have a backup facility that allows you to save all
the files deleted to an archive, along with any associated
registry entries. If yours doesn't have that facility,
don't use it - find another one. Remember, backups
are your friend.
You might also want to consider doing
a full backup, or at least saving all of your data
onto remvoable media so that if you do end up breaking
Windows beyond repair a format isn't going to cause
you to lose anything you cannot replace. Remember
to include your email storage files, ICQ contacts
database, etc. in this.
|