Helping people with computers... one answer at a time.
Error messages frequently include filenames of the form 'DOCUME~1' which seem nowhere to be found. They're actually there, just by another name.
One of the error messages I received recently refereed me to a file in the path:
Yet, when I go looking in Windows Explorer, I see nothing like that anywhere. What's up?
In a word: backwards compatibility.
OK, that's two words.
What you're seeing is the result of a legacy that dates back to Window's predecessor, MS-DOS.
That path is there - it's just called something else.
Without trying to sound like the old computer fogey that I actually am, "back in the day" MS-DOS only supported filenames that were at most 8 characters long, followed by an "extension" of up to 3 characters, and could not include certain characters like spaces. Colloquially it's often refereed to as 8.3 or eight-dot-three, and one valid example might be "explorer.exe".
At this point I need to address all the other old computer fogeys out there ready to call me out. I know it actually predates MS-DOS, and that it's not so much a function of the operating system as it is the file system. Fortunately those details are actually irrelevant to people attempting to deal with this issue today.
Now, that was all well and good for a long time. However, other operating systems, such as Unix, allowed you to have file names of much longer length. That meant it was quite valid under Unix even then to have filenames like "A Picture of My Dog.jpg" - longer than 8 characters, and including spaces.
Not so under MS-DOS - or even early versions of Windows. Another example is "iexplore.exe" - it's maxed out at 8.3, but would probably have been better named "iexplorer.exe" since it's Internet Explorer, but that's too long. In order to remain within that older 8.3 limitation, it was simply truncated and we're left with "iexplore.exe".
Eventually Microsoft added "Long Filename support" often noted as "LFN".
The problem, though, was that a massive amount of software existed that assumed filenames would never be any bigger than 8.3. Now, one could simply define that those old programs wouldn't be able to access LFNs, or one could come up with some kind of a hack.
You can guess which option was chosen.
Those filenames you're seeing are the result of that hack.
Windows will "make up" a filename for files which are longer than the old 8.3 limit for use by programs that only understand 8.3. It does so by taking the first part of the filename, chopping off a couple of characters at the end, and appending a tilde (~) followed by a number. The number is chosen simply to ensure that the resulting filename is unique within that folder.
So what you're seeing:
is really an 8.3 representation of this path:
C:\Documents and Settings\MyName\Local Settings\Temp
which you will find on your hard disk.
So why, after all this time, are programs still reporting filenames using the old 8.3 filename hack? Well, many programs have been around for a long time. One of the most common culprits I see are setup programs, which once created, are often themselves not updated other than to reflect changes in the programs that they're installing. The result is that some setup programs often leave traces of the 8.3 naming convention behind after they're done, in configuration files and in the registry. Those filenames are perfectly valid for any program to still use, and often end up showing up in error messages, as you've seen.
What can you do about it? Pretty much nothing. Just know that when you're looking for names that have "~" followed by a number the end, you're probably really looking for a longer, more descriptive name that starts with the same the same characters before the "~".
Comments on this entry are closed.
If you have a question, start by using the search box up at the top of the page - there's a very good chance that your question has already been answered on Ask Leo!.
If you don't find your answer, head out to http://askleo.com/ask to ask your question.