Rant And Fix - Software Defaulting To C Drive

Add Your Comments

Hello! My name is Alex Taylor (Luc is online nick). I am a computer programmer, but as a hobby I enjoy system building, maintenance and educating my clients as much as they will let me.

I have zero tolerance for crapware – one of my pet peeves are software bugs, which are so trivial and preventable that I, as a programmer, know exactly how the coder made the mistake, and [hopefully] how to resolve it easily.

The Problem

One of my clients calls me up to say that he couldn’t install a printer driver because he needed to have 800 MB free and only had 47. Initially I thought there must be some mistake, because no printer driver is 800 MB – so I go to the Lexmark website and download his driver and attempt to run the installation program.

The program itself was less than 50 MB, but a screen pops up which checks to make sure I have admin rights, makes sure that I have enough RAM and that my processor is fast enough, but tells me it cannot proceed because there is not 800 MB free on my drive. (No mention or choice of which drive however.)

Perhaps I should explain why these systems that I have setup have virtually no room on the C drive.

While installing Windows, I want to establish a swap file partition and have it be physically close to the system files so that if virtual memory is needed during boot, the head won’t have to travel back and forth too much. The only real way to do this, without knowledge of the drive geometry, is to create the swap file partition first, then the system partition and then the data partition comes next with space left over for Linux install if desired.

When the drive starts out fresh, the drives will be labeled consecutively in the order that they are created, so the swap file partition will always be the C drive. (If you leave a data partition and recreate the other two, then that drive is usually given the C rating.)

Now usually this problem can be corrected by shrinking, or temporarily moving the swap file, completing the installation, and then resuming it. In this particular case, I had created an additional 1.2 GB partition in the would-be Linux space and mounted it as c:progRAM files to appease several other programs which suffered from the same bug and wouldn’t have fit (together) along with the swap file otherwise.

Working

So I call up the Lexmark support team and talk with someone who is about as helpful as I had anticipated. I explain to this person, pretending he even knows what a partition is, my problem and ask for a fix. At least one question got answered – the reason we need 800 MB is for the other programs on the CD. I explain to him that we are not installing from a CD and there are no other programs. He brushes it off and reiterates that you can only install onto the C drive. So I get irritated and end the call.

I knew that it would install if I could just trick it into thinking there was enough room on the drive. Even if it did take up too much room, I could always do the “extra partition” mounted as an NTFS folder trick like I had done to c:program files.

Sloppy Fix

I had to mess with it and confer with a friend, but ultimately the solution that we came up with was to run the installation program, alt-tab out, find out where it puts its temp files and then go steal the driver files. The driver itself was less than 12 MB which would have fit on the C: drive with no modification of any sort. I sent my client the files zipped and just had him use the New Printer Wizard to install it.

The Right Way

As long as there is crappy software being produced and Windows remains the standard, it looks like space must be available on the C drive. I refuse to give up my special “at the beginning” swap file partition. However, my clients generally do not know how to fix this problem; even if the installation programs allow them to change the directory, they do not do so – so I’m effectively creating a problem for them. As a system builder, it would seem it is my obligation to make sure that people have a few GB available on C.

Microsoft has a guide for re-mapping drives through the registry, but it says it should not be used for what I was trying. I used my own computer as a test platform, knowing I could reinstall if I messed it up. That guide is HERE and contains special information on permissions, which didn’t apply to me, so I am not including them in my simple fix below.

Standard Disclaimer: Using regedit is probably a bad idea, and will mess up your computer. If you’re adventurous and have nothing to lose, then feel free to follow my advice. More general advice on messing with the registry can be found HERE.

I found that it is exceptionally easy to re-map a drive – here are the steps to resolving the C drive problem:

  1. Run Regedit
  2. Navigate to HKEY_LOCAL_MACHINESYSTEMMountedDevices
  3. Rename the key
    “DosDevicesC:” to
    “DosDevicesZ:”
    where Z is the letter you want to change it to (I left it as Z:)
  4. Reboot
  5. Run “diskmgmt.msc”

  6. Create a new logical C drive

Here is what the disk management looks like before you add the C drive:

Disk

You can see that the swap drive is at the beginning of the drive, physically followed by System and Data drive.

Without a C drive in the way, you can easily add one. When I’m making a fourth partition that nothing particularly important will go on, I like to make it a fat32 partition, in case I run a distro of Linux that doesn’t have native NTFS write support.

This is just a little tidbit that I am adding to my Windows XP install and tweak guide. (Little more than a messy set of notes I keep lying around.) If people are interested, I could get everything together into a form where other people could use it.

Alex (Luc) Taylor

Leave a Reply

Your email address will not be published. Required fields are marked *