I decided to write a reply because there are really no good tutorials on this subject online. I had to do this with my system, because in order to get the speed out of an SSD running Win XP the sectors have to be aligned, and I aligned mine at 4K sectors, which are blindingly fast, but which reduce my effective SSD size from 32GB to 4GB of usable space.
I still have 32GB of space, it just gets used 8x faster than normal - lol. Aaaah the price of speed.
Hopefully this will help others that are also looking to free up space on their system.
If you're dead set on doing this,there is a way. Apparently you are aware of the dangers involved. That said, before you do anything, create a backup of the system. Personally I use drive image XML, or 're-do' backup. You'll need an external HDD to Bkp to. Re-Do is burnt to disk ( I burn with "starburn 9.8 ) and can recover a totally hosed un-bootable system. You will also need a burner prog later on in this process to burn a copy of a linux distro.
BTW - I did this because high capacity PATA/IDE ssd's are expensive, but I needed speed. All progs recommended here are freeware that I have used myself and like. This process should work on desktops and laptops both.
Ok, a little background on my system for comparison.
System - Toshiba Satellite M55-S3294 Laptop circa 2005
OS - Win XP Professional Service Pack 3 32-bit (N-Lite[ed])
Components - 32GB Transcend PATA [can still be found for under $100.00] SSD (main drive)
- 8GB Sandisk Extreme Pro 95/60 SDHC formatted to NTFS (Wiped first w/DBAN)
for environmental variables (TEMP, tmp folders, WINDOWS folder) <-- super
speed boost. Don't mess w/ slow cards or off brands- they're not worth it.
- 1.5GB RAM (Max for my system)
- Dummy Disk to make removable disks appear fixed (REQUIRED IF YOU WANT TO DO
THIS) and can be found here:
DO NOT INSTALL YET !!!
- DVD Super-Multi Drive
- 4 USB 2.0 ports
_ PCMCIA slot. I'll be using this in the future for
USB 3.0 (More speed WOOT)
Peripherals- WD MyBook 3TB External HDD USB 3.0 (Didn't install the Bloatware)
My system is almost instantaneous. Visual Studio 2010 loads in under 3 seconds while I'm playing a vid on MPC-HC at the same time and cruising the web. Not bad for 9 year old system.
THESE ARE INSTRUCTIONS FOR Win XP ONLY AND SHOULD ONLY BE ATTEMPTED BY PEOPLE WITH INTERMEDIATE TO ADVANCED COMPUTING SKILLS,-*- or people that get a kick out of frying bacon in the nude. ;-)
What you need:
Dummy Disk Driver software from link above. Do not install yet. --- REQUIRED!
External Hard Drive (Laptop/Desktop) or 2nd Hard Disk Drive (Desktop)
A live linux OS burnt to disk. Make sure it's a live version. UBUNTU 10.xx or
higher. Earlier versions could not handle white-space in file names.
I like Ubuntu 12.04:
The Command line program 'Junction'. Don't worry, I'll walk you through it.
Get it here: http://technet.microsoft.com/en-us/sysinternals/bb896768.aspx
- 7-zip archiver (or similar)
(The .msi installer gives you right click functionality)
- 800 MB free space on your primary disk drive
- Two blank CD's to burn to.
What to do:
Download to the desktop:
- Backup software (unless already installed)
- Burning software (StarBurn)
- Dummy Disk Driver (.exe)
DO NOT INSTALL ANYTHING YET!
Install StarBurn and watch the prompts, many new versions of freeware want to install toolbars, change your homepage, and install crap-ware on your system. I use version 9.8 (StarBurn) which is hard to find.
- Install or burn to disk the backup software.
- Make a backup. This will take a while.
- Burn Ubuntu to disk.
- Install 7-zip
- Right click the Junction folder->select 7zip > Extract to "Junction" (The extracted
folder should appear on the desktop)
- Disconnect all peripherals - SD cards, external drives, etc, EXCEPT THE DRIVE YOU
WILL BE MOVING THE PROGRAM FILES FOLDER TO. All that should be connected to the
system is the primary drive and the drive that will be the new home for the
- Run the dummy-disk driver executable by double clicking it. This will reserve a
persistent drive letter (for every device connected to the computer) that never
changes even if the device is plugged into a different port in the future. In other
words, the OS will always be able to find the device that contains your program files.
The operating system will now see your external disk as a local disk.
- Positively disconnect from the internet by unplugging the cable, shutting down the
router or switch, or, like on my laptop, turning off the NIC power switch.
- Shut down the system
- Boot into the BIOS and check that the first boot device is the cd drive. If not,
change it to the first boot device.
- Insert the Ubuntu (or other linux distro) disk, exit the BIOS, and shutdown.
Boot into Ubuntu. (Choose 'Try Ubuntu', NOT 'Install Ubuntu')
***Here's where the fun starts***
When Ubuntu is fully loaded:
Bring up the drive(located on the left of the screen) you want to move the
folder to and create a new folder. Use a naming convention to differentiate the
folder from the one on the C: drive. I use "_PROGRAM_FILES". The underscores and all
caps let me know it's a folder on an external drive.
A folder name that begins w/ an underscore will also not be indexed by a server -
something to keep in mind. Open the folder.
- Bring up the C: drive and navigate to Program Files. Open the folder. Both windows
should be open on the desktop. Tick the "Show hidden files" check-box under the
view menu. Highlight/Select all the files from C:\Program Files and drag/drop them
to the open new folder window. The copy dialog will come up.
NOTE: the reasons for using a Linux distro to copy these files are myriad. If you have checked the forums for creating junctions, symlinks, and hard links, you will know that there are thousands of posts about people running into problems when trying to copy or move system files. Everything from corrupted transfers to permissions not copying over to the new folder. Plain and simple, the windows built in copy software just plain sucks bouncing goat nuts. Don't use it UNLESS you WANT problems. Besides, Linux will transfer these files 5-7x faster on average than Windows will.
After the transfer is complete, check the folder size for both the new and old folders
to confirm they are both the same size.
- Power down Ubuntu ((The disk should eject) you may have to hit the enter button after
about 30 seconds - one of Ubuntu's quirks.) and boot back into Windows under an
administrative account. Wait for all start-up programs to finish running and do not
open anything other than what is mentioned next. THIS IS THE TRICKY PART >---
- Open a command prompt. (Windows button + r --> enter 'cmd') If you downloaded and
extracted junction to the desktop you need to change directory into the junction
folder. At the command prompt type this sans(without) quotes:
"cd Desktop" the command prompt should put you into the desktop folder. Now cd into
the junction folder --> "cd Junction". You should now be inside the Junction folder.
Junction has to be run from inside the Junction folder.
- Go to My Computer -> C: -> Program Files. Highlight and Shift + Delete everything in
the folder. You WILL receive warnings; continue to delete. (The command line is
located under the windows folder, so everything is OK. Also, if anything goes south
all your Program Files are on the other drive.) In the explorer window, go up one
level and Shift + Delete the Program Files folder. Close explorer.
- Return focus to the command line.
- What we are going to do is use Junction to create a symlink which is a re-parse point on a lower level than the file system. For all intents and purposes the Operating System will treat it as if it is an actual folder -
Junction will create a new folder where the old Program Files folder was, that's why
the original Program Files folder needed to be deleted.
In order to keep file system integrity, the folder that Junction
creates under C: should be named the same as the old one. This folder will hold only
one file which is a string pointer reference to the location of the folder that the
program files were previously moved to off disk.
Are you ready ?
You will need to type the complete file path of the target folder(that junction will
make under the C: drive where the old Program Files folder was) and then the full
file path to the source folder(the one you are moving the Program Files to.) For
example,let's say the folder you're moving the files to is located at
The syntax looks like this:
junction -s target source
What you actually would type would be:
junction -s "C:\Program Files" J:\_PROGRAM_FILES
Take a look at and notice that C:Program Files is in quotes. This has to be because
there is white space in the file path name. With Junction, if there is any white space
in a path name, the entire path name must be enclosed in quotes, else it will throw
an error. If your syntax is correct, junction will tell you the path was successfully
created. CONGRATULATIONS - YOU HAVE JUST SUCCESSFULLY SYMLINKED YOUR PROGRAM FILES OFF
DISK IN WINDOWS XP.
Reboot you computer TWICE. Always reboot twice when changing system files. The first
reboot will be a little slower, but the second will be up to par. Reconnect to the
internet and you should be good to go.
From now on, anytime you install a program to the target folder C:\Program Files, it
will actually be symlinked through the target folder and installed in the source folder
off disk. SWEEEEEEEEEET !!!
Caveats: NEVER symlink inside a symlinked folder. If you do, you're in for more problems than you can imagine. If you decide to also symlink the desktop itself, do not use any shortcuts that point to program files from the desktop. In fact delete all those shortcuts from the desktop and use Start --> all programs instead. Nested symlinks will wreck havoc with antivirus scanners too sending them into an infinite loop that will more than likely lock up your system.