The Shrink Volume feature in Windows Vista and above has some serious limitations, which we'll try and explain and then suggest a few workarounds that might help you out. Be careful when following these steps, because they could leave your system unable to boot... advanced geek level required.

I would also suggest that if you are trying to configure a dual-boot system, your best bet is to backup all your data, and setup a fresh new dual boot system, remembering to install the oldest OS first. (XP before Vista, and Linux last)

Problem Explanation

The main problem that we encounter with the shrink volume feature is that you can't shrink the volume even when there is clearly free space.

You are unable to shrink the volume at all, since according to Windows you have no free space to shrink:

image

The reason why Windows won't let you shrink the volume is because there are immovable system files at the very end of the volume, as this screenshot from Auslogics defragment utility shows us. In this case, the immovable file is actually the MFT, or Master File Table for the volume.

image

Making Shrink Volume Work

To absolutely ensure that you can shrink the volume, you should disable as many of the system files as you can, at least temporarily. Here's the list of steps:

  1. Run the Disk Cleanup Wizard, making sure to remove the hibernation file and all restore points.
  2. Disable System Restore
  3. Disable the pagefile ( Open up System in Control Panel, then Advanced System Settings \ Advanced \ Performance \ Advanced \ Change \ No Paging File.
  4. In the same Advanced Settings, go to Startup and Recovery \ Settings and then change the Write debugging information drop-down to "None" to disable the kernel memory dump.
  5. Disable Hibernation mode in your power options \ advanced power options screen.
  6. Reboot the machine, and then delete your c:\pagefile.sys file, following these instructions if you are having issues.

Now that we've deleted almost every system file that we can, you should run at least one of these free defrag utilities, but preferably all of them, in order to move all of the files to the beginning of the volume, so we can force the Shrink volume feature to work.

  1. Power Defragmenter(GUI interface for sysinternals contig)
  2. Auslogics Disk Defrag

If you are encountering the MFT problem, then you won't have too much luck even after running those utilities. What you'll need to do is use one of the non-free defrag utilities that is able to move the MFT files. If somebody can suggest a free way to move the MFT, leave a note in the comments.

  1. You can download a 30-day free trial of Perfect Disk and then uninstall it when you are done. Or not.

At this point you should be able to shrink the partition, at least a decent amount. Once you've gotten the partition shrunk, you should re-enable those important files:

  1. Re-enable the Pagefile (Reverse instructions above)
  2. If you have issues re-enabling hibernate, follow these steps.
  3. Enabling System Restore or kernel debugging information is entirely up to you.
  4. Reboot.

Again, your best bet for dual-boot is backup, wipe, and reload, but these steps did work for me during testing.

Using Linux to Resize

You can also use the gparted live cd to resize your partitions. The problem with this is that it will definitely cause your system to not boot anymore unless you follow some very specific steps, because Vista can't handle it.

Using Commercial Utilities

There are a number of commercial software utilities that can handle this type of thing for you, like Partition Magic. We prefer free software here whenever possible.

In summary, If you are lucky enough for Shrink Volume to work for you, great. If not, I'd recommend backing up, wiping, and installing fresh.