Shrinking a volume using diskpart
The Diskpart command in Vista now lets you shrink a volume by using the Shrink subcommand, see here for details. This can be useful if you have only one hard disk and a C: drive that fills the disk, and you want to make room on your disk to create a second volume for storing data or some other purpose. Unfortunately system files that have fixed locations like the paging file and system restore points can prevent you from shrinking your C: drive by much.
The workaround is to disable System Protection (i.e. disable automatic creation of System Restore points) and specify no paging file, and then shrink your volume. For example, I had Vista installed on a 64 GB volume and did the following in order:
select disk 0
select volume 1
This reduced my C: drive from 60 to 45 GB.
I then disabled System Protection and specified no paging file, rebooted, and ran the above commands again. The result was I could take another 10 GB off my C: drive to bring it down to 35 GB at which point the volume is about 75% full.
A few caveats though before you try this on your computer:
1. If you disable System Protection, you won't be able to go back to a previous restore point if something goes wrong with your system, so it's a good idea to re-enable System Protection after you've shrunk your volume.
2. If you shrink your volume too much, you may run into problems since Vista saves old versions of system binaries in the WinSXS folder and this folder can grow quite large in size.
3. If you want to expand your volume afterwards, you can use the Expand subcommand of Diskpart to do this, but if you want to keep your disk a basic (rather than dynamic) disk you can only extend your C: drive to contiguous (adjacent) space on the disk.