Even in the enlightened year of 2005, we have programs that don’t handle long file names


When I saw Tim Sneath's description of the root cause for all the Windows Vista product key problems, I was amazed that the reason was something my readers tend to go completely ballistic over: Long file names.

It so happens that one of the ISO mounting tools that people were using for installing Windows Vista doesn't support long file names! (At least not by default.)

Comments (42)
  1. blah says:

    Can you enlighten me why it is possible to mount CD or DVD as a iso/udf file system, but not any other arbitrary set of bytes? Why is Windows so inflexible in this matter? Or are data CD/DVD some sort of magic thing that just cannot possibly exist in a image file?

    The need to fiddle around with ISO tools that either bug, do unnecessary copying or install kernel drivers annoys quite much when in *nix you can mount iso files with the quite obvious "mount" command. Atleast an API for that would be nice since people are starting to move their CD’s more to HDD with the current rate of capacity increase in HDD. Can you even mount floppy images without writing a driver, doubt it..

  2. Lee Houghton says:

    In the enlightened year of 2005, we still have programs that assume Windows is installed on C:WINDOWS.

    I recently installed a new shell, and my Windows is installed on D:. The shell proceeded to read all my icons and start menu from my old windows installation on C: which I haven’t deleted yet. Total time this shell was installed for: 2 minutes.

    On the bright side, some viruses fail with a "path not found" error :)

  3. Ian Ringrose says:

    Does ISO allow long file names? I have always thought that long files names are outside of the ISO spec.

  4. foxyshadis says:

    ISO-9660 has very DOS-like filenames, but virtually every CD and CD burning suite has used Joliet or UDF for years. (With ISO as a fallback option.) Both still have severe restrictions on path+name length, but not like ISO.

    In fact UDF support is required for DVDs.

  5. Tim says:

    I put together a media PC (MCE) recently, and when it came to install the drivers for the TV tuners, the driver install program (some godforsaken MFC abortion, obviously, not some sane form of driver install), it crashed after showing a splash screen.

    TV tuner functionality being quite essential, I investigated this, and guessed after a while that it was because my Windows system drive was drive G: – remember kids, never install Windows with the integrated CF/SD readers actually plugged into the USB bus :-(

    About a minute later, I remembered our old friend, the ‘subst’ command from my DOS days. After a quick subst command to make C: redirect to G:, the drivers installed fine.

    I also emailed the IHV to inform them about these problems. That was months ago, and I never got a reply, of course.

    I, for one, am glad that MS decided to put a space in "Program Files". Can you imagine how many apps still wouldn’t cope with spaces in filenames if they hadn’t?

  6. Carlos says:

    ISO 9660 is two standards in one. You can have disks with 8.3 file names or disks with 30 character file names. Both are very widely supported.

    Microsoft Joliet is additional data on the disk supporting UNICODE filenames up to 64 characters.

    MS chose to produce CDs with ISO-standard 8.3 filenames and long names in the Joliet extension. But they could just as easily have produced disks with ISO-standard 30 character filenames and the same names in the Joliet extension, or no Joliet extension at all. (The file causing the problem, pkeyconfig.xml, is much less than 30 chars.)

    Even in the enlightened year of 2005, why does MS produce CDs with unnecessary 8.3 filenames?

  7. Mihai says:

    What puzzled me for a long time is this:

    – MS Joliet supports UNICODE filenames up to 64 characters

    – MS Windows supports UNICODE filenames up to 256 characters

    The MS CD format cannot handle the MS file names :-)

  8. oldnewthing says:

    I find it ironic that somebody is telling Microsoft to ignore an international standard (ISO 9660 Level 1).

  9. Carlos says:

    "I find it ironic that somebody is telling Microsoft to ignore an international standard (ISO 9660 Level 1)."

    I’m suggesting that ISO 9660 Level 2 would be a better choice.

  10. James Risto says:

    Here’s a question; seems to me that the Windows install files have been 8.3 forever, until perhaps now in Vista. All DLL’s and EXE’s in Windows (and Office) are 8.3. Now I admit that Windows, when running, seems to use longer files. But perhaps people have (wrongly) assumed that this was a rule.

  11. Mike Jones says:

    Perhaps this is the place to mention that I always found:

    C:Documents and Settings

    The most anoying folder name in the history of the world. Something without space would be sooo much nicer – eg c:YourStuff

  12. bramster says:

    "Here’s a question; seems to me that the Windows install files have been 8.3 forever, until perhaps now in Vista."

    Maybe the bios only knows about 8.3 names?

    Just speculationg

  13. msemack says:

    "Maybe the bios only knows about 8.3 names?"

    The BIOS doesn’t know ANYTHING about file names. The BIOS isn’t an operating system, it doesn’t know jack about filesystems at all.

  14. Factory says:

    "One tool that some people have used with success for ISO image extraction is Daemon Tools."

    Heh, biggest software company in the world (indirectly) reccomends Daemon Tools. Funny on so many levels. :)

  15. Tim says:

    "Here’s a question; seems to me that the Windows install files have been 8.3 forever, until perhaps now in Vista."

    "Maybe the bios only knows about 8.3 names?"

    IIRC, the 8.3 install file thing is because of old CD-ROM drivers. If you were really unlucky, your Windows CD-ROM driver would not allow anything other than access to the 8.3 filenames/toc. (Kind of like how if you were really unlucky, Windows couldn’t use your HD in 32-bit mode, so it emulated it and slaughtered I/O performance.)

    This was the case in the days of Windows 95/98, certainly – at the time I investigated shipping our product (a game) on a CD with LFNs, and was told fairly firmly (either by an MSDN note, or an actual MS dev from the DX/game support group at a Meltdown event) that I really didn’t want to do that.

    To be fair, I believe that even at that time, you had to be really unlucky to get a CD-ROM drive that would only allow 8.3 access.

    Of course, we later found out that one of our test PCs was such a beast…we found out when trying to install another product, I should point out.

    Our product worked fine :-p

  16. DrPizza says:

    The installer for Visual Studio 2005 does not properly handle long file names. Specifically, it crashes if your temporary directory does not have a short file name.

    I would hope that the installer doesn’t try to kick off a 16-bit executable, but you’ve got to wonder.

  17. Ross Bemrose says:

    " Perhaps this is the place to mention that I always found:

    C:Documents and Settings

    The most anoying folder name in the history of the world. Something without space would be sooo much nicer – eg c:YourStuff"

    I had seen somewhere (probably a blog) that this has changed to c:Users in Vista.

  18. mikeb says:

    Factory: >> Heh, biggest software company in the world (indirectly) reccomends Daemon Tools. Funny on so many levels. <<

    Why is that? Daemon Tools is a fine ISO mounter. MS have been pointing MSDN Subscribers to Daemon Tools (and some other ISO readers) – with a direct link – to deal with ISO images for quite a while now.

  19. Puckdropper says:

    Tim,

    I remembered SUBST a few days ago too. I had some insanely long directory to go through and said "I wonder if SUBST is still in XP…" and it was! It solved my problem and worked wonderfully. My *nix shell program that I was running a open source program through had no problem handling the new drive.

    Does anyone know if any problems would have trouble with SUBST’d drives? Some DOS programs didn’t really like them. (I remember after finding SUBST in DOS I ran into programs that said "Don’t run this if you’ve got a SUBST’d drive.")

  20. Chris Conti says:

    We use SUBST on a regular basis for swapping various source tree versions in and out, and most of the developer tools have no problem. Be aware however, that in newer versions of the OS (XP and later I think) SUBST is logon session specific. This means that you can’t create a SUBST, and then point IIS to that subst’d path as a virtual directory- you’ll still need to use the physical path so that processes in other logon sessions can refer to the same set of files.

    FWIW we also use junction.exe (from SysInternals) to create NTFS reparse points to solve a lot of the same issues, and then some.

  21. blah says:

    Why it’s not possible to just give the OS a filesystem definition & type mapping as, say xml or a xml that is transformed into some kind of binary mapper/transformer.

    Then you could just give xml version of a filesystem spec to the OS and it would know how to read it without requiring driver done with the piece of crap called IFS. MS asks $$$ for it just because it so shoddy work that they don’t want everyone to see it.

    I want to be able to mount any file system with relative ease, atleast read only, by throwing some spec at the system. There should be a redirector to handle the hook and user mode driver handling the translation.

  22. Lee Houghton>

    Bwahahaha. I’ve had a virus try to install itself in C:WINNT (I had Windows 2000 at the time). This was immediately obvious because… my Windows was in C:WINNT_3 (had some huge problems with Windows that required reinstalling it twice); it actually created C:WINNT. I found that downright hilarious.

  23. oldnewthing says:

    blah: Wow, if only there were a system that could take a spec and turn it into code. We wouldn’t need programmers any more!

  24. blah says:

    Wizard to turn any spec into code, only Microsoft could do that.

    However some kind of system wide integration point to make it possible for example from command prompt to go do CD c:file.zipblah or file.isoabc and have the IOCTL be handled by user mode driver which in turn could be hooked up with managed code for performing the actual reading or network calls so you could do CD ftp://localhost etc.

    Make the kernel and driver parts as small and safe as possible and let the complexities be handled through io completion callbacks which can then either return data from buffer or spinning a thread to do network reading or whatever. You don’t need to have ton of kernel drivers.

    Microsoft should provide the safe guarded entry points for people in the higher (user mode, .net) to apply innovation by using the information available on higher levels of the OS to the operations on lower level transparently.. Ugh. Time to reduce the number of kernel drivers.

    And at that point it might become possible to think about generaziling simpler hierarchical systems for cases where you don’t need to actually have the whole feature set of a file system to just do the usual open,close,seek,read,write on the data. It sounds hard now since everything happens at kernel level. Time for that to change!

  25. blah says:

    Too bad you can’t edit these comments ;-)

    The previous comment was quite amusing, so I’d rather have a some kind of local/remote + seekable/non-seekable place where the user can drop favorite zip/iso etc files, remote web & ftp sites (and setup them optionally permanently).

    That’s possible to do now obviously. However what if you wanted to temporarily let legacy application access these possibly slow, read only or non-seekable system as if they were local? That’s what I hope would be possible in future. The user knows they are special and can grant, if needed, a more direct access which doesn’t involve unzipping or full copying necessarily (only long seek accesses to non-seekable systems would involve that in worst case).

    There are programs that do this stuff, allow mounting ftp,web,iso,zip at different levels (explorer only mostly). You can write namespace extensions but they do not allow transparent access for legacy software and given they hook that piece of * called explorer they often cause wild array of issues.

    Now you have a million programs that imitate explorer style interface and provide zip, ftp etc in these varying interfaces.

    Who the he.. wants that? WPF managed and extensible Explorer.. When?!!?

  26. Peter Clay says:

    Doom3 considers Daemon Tools and similar programs to be "hacking tools", and won’t let you install it if they are installed. This is another reason why Linux-style loopback mounting of disk images would be useful :-)

    Full-service image support like Apple’s DMG format and associated tools, including "burn image to CD", would be even nicer.

  27. non-admin says:

    Have you ever tried Microsoft Windows CE Platform Builder? And yes, at the same time, try running it as non-adminstrator. Good luck!

  28. DrPizza says:

    Another MS program that doesn’t understand LFNs: rc.exe (the resource compiler).

    rc.exe /fo does not accept quoted LFNs. This is causing me serious grief.

  29. DrPizza says:

    Tell a lie; it’s VC++ that’s having trouble. rc.exe doesn’t much like LFNs, but it seems you can coax it into using them. VC++ then seems to spawn some other program which blows up.

  30. Norman Diamond says:

    The DDK is more than just a program but the DDK still has problems with LFNs.

    PhotoDraw isn’t even available to MSDN Universal subscribers but PhotoDraw’s era wasn’t really too long before 2005.

    The Recycle Bin in Windows XP allows filenames longer than 30 characters but I’m not sure how much longer. If you use Windows Explorer to delete a file with a name far shorter than 255 characters, it can still be long enough to get a warning that the file can’t be moved to the recycle bin and a question if you want to delete it outright.

    On the other hand, regarding a few people’s discussions of whether "the" BIOS understands 8.3 filenames, I’ve owned two that do. At least two PC makers figured out how to make the BIOS do hibernation into files on a FAT partition before Microsoft released similar functionality in Windows 2000.

  31. bramster says:

    Having been properly chastised about BIOS and 8.3. . . I can only say, I come here to learn.

    but. . . Robert A. Heinlein’s "by his bootstraps" comes to mind. . .

  32. bramster says:

    <rant>

    "and don’t get me started. . ."

    about product keys and activation.

    After having Symantec’s on-line renewal of my internet security software fail (Novermber, 2004), I purchased a shrunk-wrapped boxed set version.

    Never mind that they stiffed me on the mail-in rebates. . .

    At random times over the past year, I’ve been required to "activate my product".

    Which I did, although, it, seemed to me, that there was a problem with the software if it didn’t know that it’s a legal version.

    Unfortunately, Symantec doesn’t like to talk to people. It doesn’t even like to read emails. Some propeller head at Symantec has decided that they’re smart enough to answer any problem with software.

    The most recent "re-activation" failed, because Symantec keeps a database of activation attempts. Apparently they think I’ve activated the software on 24 different machines (my calculation — reactivation message roughly every two weeks). So, yesterday, reactivation failed. . . Yada Yada Yada. . . call this number for technical support. . . refers you to their "problem solving website. . . which gives no telephone numbers to call.

    There are some really brilliant software concepts there, but, unfortunately, with some really brain-dead implementations.

    The bottom line. . . I was out 3 hours of my life. . . (I may not have that many left).

    Norton Ghost is Great!

    Symantec Internet Security is Gone! (Another three hours, but that’s the price of freedom). The fact that I can make this point demonstrates that the problem has been solved.

    But my message to software manufacturs re product activation. . . Make sure it’s perfect. If in doubt, make sure you listen to your customers.

    </rant>

    I know this is sort of off-topic. . . but the link led me to it.

  33. Aaargh1 says:

    In the enlightened year of 2005, we still have

    > programs that assume Windows is installed on

    > C:WINDOWS.

    Worse: in the enlightened year of 2005, we still have OSes that use drive letters.

  34. James Risto says:

    If you mount drives into directories off of C: you can forget about drive letters.

  35. Brian says:

    Perhaps this is the place to mention that I

    > always found:

    >

    > C:Documents and Settings

    > The most anoying folder name in the history of > the world. Something without space would be

    > sooo much nicer – eg c:YourStuff

    You do know that you can set this when you install Windows, right?

    Create a winnt.sif file, put it in the root directory of a floppy and place that floppy in the drive when installing windows. In the [GuiUnattended] section place a line ProfilesDir="%systemdrive%YourStuff". No more "Documents and Settings".

    This has been possible for years, since 2k at least. And yet people still bitch about "Documents and Settings" being too long. Well, change it next time then.

  36. Brian Kemp says:

    It’s been forever since I installed Windows, and I’d like to keep it that way for the moment…

    However, wouldn’t it be nice if the installer had an option for the user to change that instead of fooling around with documented-only-for-hardcore-system-administrators GUI text file options that require installing a floppy drive into the machine?

  37. Chris Becke says:

    When I put my latest system together and installed everything, by the time I was done, the harddrives had been enumerated, well, a little later than they normally are.

    As a result, C, D and E are allocated to a USB memory card reader. F:Windows is where the OS is.

    Im actually suprised that, as yet, nothing has broken.

  38. ChipVA says:

    Brian Kemp: "However, wouldn’t it be nice if the installer had an option for the user to change that instead of fooling around with documented-only-for-hardcore-system-administrators GUI text file options that require installing a floppy drive into the machine?"

    You mean like on the Properties tab of the My Documents folder? Admittedly, this only changes "My Documents" IME, but it should be useful for most folks.

  39. Cooney says:

    Those of us who install our own systems might like to retain the unified structure while removing the overly long directory names.

  40. Norman Diamond says:

    Sunday, October 30, 2005 11:03 PM by bramster

    > Having been properly chastised about BIOS

    > […]

    > but. . . Robert A. Heinlein’s "by his

    > bootstraps" comes to mind. . .

    That is exactly where the word "boot" (originally "bootstrap") came from, in the computer world. Probably not directly from Heinlein, but both Heinlein and computer workers took it from the ordinary metaphor of a person pulling himself up by his own bootstraps.

    By the way one kitten that I had, before she got used to being held facing upwards in my arms, was enormously scared of being held that way. How scared? Well, besides paws trying to grab onto everything in sight to turn herself over, she even used two of her paws to grab onto one of her paws and try to use that to turn herself over.

  41. bramster says:

    Thanks, Norman Diamond.

    I needed that.

    Minimize your therbligs until it becomes automatic; this doubles your effective lifetime — and thereby gives time to enjoy butterflies and kittens and rainbows.

    R.A.H.

  42. Norman Diamond says:

    Take a glance at

    http://lab.msdn.microsoft.com/productfeedback/viewfeedback.aspx?feedbackId=c26a6d31-88c2-40e9-bf47-beb6b7139cf6

    and then read the last comment at the bottom of the page. The enlightened year of Visual Studio 2005.

Comments are closed.