9.6 The Dirty Little Secret of Long Filenames
If you depend on your backup tapes to
re-create a crashed hard drive, you need to know that a design flaw
in Windows long filenames (LFN) means that your carefully made backup
tapes may be nearly useless. This is a deficiency in Windows itself,
a flaw in how long filenames and long directory names are
implemented. Backup software can do nothing to work around the
problem. Image backup is the only way to make a fully reliable backup
under Windows.
 |
Read and heed these words: It is impossible to
make a reliable file-by-file backup under Windows if the volume uses
long filenames or long directory names.
|
|
The problem
occurs because Windows assigns aliases to long directory names on the
fly, as those directories are created, and then uses those generated
aliases in the registry. For example, if you install Microsoft
Office, it installs to the folder C:\Program
Files\Microsoft Office. But when Windows creates the
Microsoft Office subfolder in the
C:\Program Files folder, it dynamically creates
a short alias for the new folder. So, rather than the registry
pointing to Word as C:\Program Files\Microsoft
Office\Office\Winword.exe, as it appears in a directory
listing, the registry might actually point to
C:\PROGRA~1\MICROS~3\OFFICE\WINWORD.EXE.
So far, so good. The problem is that Windows nowhere directly
links that short directory name to the long directory name. As you
use the system, you may create and delete other directories with long
names that are assigned similar aliases. If you then back up that
volume and subsequently restore it to an empty drive, Windows again
creates short aliases on the fly, but without any
consistency in assigning short directory name aliases to the same
long directory names to which they were originally
assigned. A concrete example makes all this clear.
We installed Windows NT 4 to an empty hard disk, using NTFS. It
wouldn't have made any difference if
we'd used Windows 9X or 2000/XP or the FAT
filesystem—all Windows versions have the same flaw. After
installing the OS, we installed drivers for a Microsoft keyboard and
mouse. Setup for those drivers created the subfolder
C:\Program Files\Microsoft Hardware, which
Windows assigned the alias C:\PROGRA~1\MICROS~1.
We then installed Microsoft Office 2000. Setup installed that in two
subfolders, C:\Program Files\microsoft
frontpage, which Windows assigned the alias
C:\PROGRA~1\MICROS~2, and C:\Program
Files\Microsoft Office, which Windows assigned the alias
C:\PROGRA~1\MICROS~3.
We then
uninstalled the Microsoft keyboard and mouse drivers and deleted the
folder that had contained them. This left
C:\PROGRA~1\MICROS~2 and
C:\PROGRA~1\MICROS~3 on disk, but
C:\PROGRA~1\MICROS~1 was no longer present. We
did a backup to tape, formatted the hard disk, reinstalled Windows
and the backup software, and restored from tape. The restore
re-created the folders C:\Program Files\microsoft
frontpage and C:\Program Files\Microsoft
Office, but with aliases of
C:\PROGRA~1\MICROS~1 and
C:\PROGRA~1\MICROS~2 respectively.
Unfortunately, the registry still thought FrontPage was in
C:\PROGRA~1\MICROS~2 and Office in
C:\PROGRA~1\MICROS~3, which meant that Windows
couldn't find either FrontPage or Office. In other
words, Windows broke itself.
 |
You might think that this is a convoluted series of steps that is
unlikely to occur in the real world, but in fact this happens all the
time. We frequently get messages from readers asking why their
systems appear to have been completely corrupted after a disk failure
and a restore from tape. This is invariably the reason.
If
you've ever wondered while uninstalling a program
why most uninstallers don't delete the empty folder,
now you know the answer. If we hadn't deleted the
empty folder in the preceding example, we might have avoided the
problem. In particular, note that overly aggressive third-party
uninstallers frequently contribute to this problem by deleting empty
program folders by default.
|
|
In addition to implementing long
file and directory names ineptly, Microsoft exacerbates the problem
by using default folder names for most of its applications that start
with Microsoft. In the preceding example, if
Setup had simply named the directories Hardware,
FrontPage, and Office (or
even MSHardware,
MSFrontPage, and MSOffice),
there would have been no ambiguity in the aliases assigned to those
folders, and the system would have worked properly after the restore.
Note, however, that the problem isn't limited to
Microsoft program folders. Any software that uses long file and
directory names and also uses the registry to locate its program,
data, or configuration files is subject to the same problem. To avoid
this problem:
When you install
software, always install it to a folder with a short name if Setup
offers that option. Most software installs to a long folder name by
default, but the default installation location can usually be
specified manually. Note that the option to specify the installation
location manually may not be visible unless you choose
"Advanced Setup Options" or
something similar. When you
create data directories, always use MS-DOS 8.3-compliant directory
names. Some software allows you to
"point" it toward a directory you
have created yourself, but may then add entries to the registry to
define that location. Never
delete a directory that may be subject to this problem, even if
you've removed all of the files and subdirectories
that the directory contained.
 |
Although you can disable 8.3 filename generation for NTFS volumes,
doing so may cause compatibility problems with applications that
expect 8.3 filename support. Nor are compatibility problems
necessarily limited to older programs. For example, disabling 8.3
filename support may cause problems when burning ISO image files to
CD.
|
|
|