2

I'm have a lot of programs already installed on my Windows XP machine, but now am facing lack of free space in my C:\ drive.

I know normal copy wont work anymore. From searching Google, I saw different methods for the same, but am confused of trying it as I'm afraid if it will kill my XP.

Is there any way to move the files in Program Files to another drive?

1
  • this isn't an answer, but.. no.. you can't.. the only thing I'd suggest you to try is MOVE the folder and create a link (using mklink). the problem is that you can't touch that folder while the OS is running... it contains almost everything!
    – AndreaCi
    Mar 19, 2013 at 13:02

5 Answers 5

3

Program files are not meant to be moved. Installed software in the Program Files directory is usually so tied up with the rest of the system, that moving the program would break it and cause dozens of miscellaneous problems elsewhere: broken file associations, uninstallers...

Because these ties are created by the installer, you can cleanly and relatively safely 'move' program files by uninstalling the software and reinstalling it in a different place, but this requires a lot of manual effort and the procedure might unintentionally clean out data from the user space as well (e.g. settings).

Assuming your program files currently reside on an NTFS partition, you can physically move data to another drive (not a network share and preferably not a removable drive) and create a junction in its original location. Other software, including the operating system, will still be able to access the data through C:\Program Files\ normally, but they no longer take up space on that particular drive.

There are a few exceptions where junctions behave differently. Perhaps most notably, deleting junctions does not delete their target. Overall, they are sufficiently transparent that this method is unlikely to cause major problems. Nevertheless, to be on the safe side, I would recommend only creating junctions for a few big (sub)directories instead of the entire Program Files folder.

The command to create such junctions would be: mklink /J "C:\Program Files\BF Program" "D:\Program Files\BF Program", but the mklink command was introduced in Vista and is not available for Windows XP. A Windows XP alternative is Junction from Sysinternals, for which the syntax is simply: junction "C:\Program Files\BF Program" "D:\Program Files\BF Program".

If moving program files causes problems despite the use of NTFS junctions, you can revert to the old situation by executing junction -d "C:\Program Files\BF Program" and moving the corresponding files back.

2

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: 

http://www.prime-expert.com/articles/a05/enabling-multiple-partitions-on-removable-usb-storage-devices.php

         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.

         ***WARNING***

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:

  1. Dummy Disk Driver software from link above. Do not install yet. --- REQUIRED!

  2. External Hard Drive (Laptop/Desktop) or 2nd Hard Disk Drive (Desktop)

  3. 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:

  4. 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

  5. 7-zip archiver (or similar)
    (The .msi installer gives you right click functionality)
  6. 800 MB free space on your primary disk drive
  7. Two blank CD's to burn to.

What to do:

  1. Download to the desktop: - Backup software (unless already installed) - Burning software (StarBurn) - Dummy Disk Driver (.exe) - Junction(zipped) - Ubuntu(ISO) - 7-zip

                   DO NOT INSTALL ANYTHING YET!
    
  2. 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.

  3. Install or burn to disk the backup software.
  4. Make a backup. This will take a while.
  5. Burn Ubuntu to disk.
  6. Install 7-zip
  7. Right click the Junction folder->select 7zip > Extract to "Junction" (The extracted folder should appear on the desktop)
  8. 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 Program files.
  9. 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.
  10. 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. POSITIVE Disconnect.
  11. Shut down the system
  12. Boot into the BIOS and check that the first boot device is the cd drive. If not, change it to the first boot device.
  13. Insert the Ubuntu (or other linux distro) disk, exit the BIOS, and shutdown.
  14. Boot into Ubuntu. (Choose 'Try Ubuntu', NOT 'Install Ubuntu')

                       ***Here's where the fun starts***
    

    When Ubuntu is fully loaded:

  15. 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.

  16. 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.
  17. 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 >---
  18. 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. +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  19. 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.
  20. 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 ?
  21. 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 J:_PROGRAM_FILES . 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.

  22. 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.

1

Here are three suggestions;

  1. You could copy the files and create a NTFS Junction Point or Link to them, but this could be tricky. If done wrong, it could render things unusable.
  2. Uninstall and reinstall the programs. While reinstalling them, point them to the new drive. Be warned there are programs which will only install to the C: drive because of the way they are programed.
  3. Install the new larger drive, fresh install of Windows and all your programs, then move your data over. This is probably the most stable way to do it.
0

you could try : WAM: Move Programs From One Drive to Another a PC MAG (pcmag.com) program from their utilities library (link:
http://www.pcmag.com/article2/0,2817,2421044,00.asp ) unfortunately this is not a free program but check it out anyway.

-1

If starting with a few hundered programs installed (in Program Files) then this simple idea takes months, I presume. But if PLANNING for a 3 partition harddrive (XP, PROGRAM and DATA) - then partition (for instance) a 2 TB SATA harddrive, with 100 GB for XP, 500 GB for PROGRAM and 1500 for DATA. (A second drive becomes DATA2 - later on).

  1. But the first step is to just make the XP 100 GB partition first. (the rest of the drive must be empty). NOW INSTALL XP, with so LITTLE applications as possible.
  2. THEN partition drive D and E and formate them (this way XP will guaranteed become drive C, and the only drive letter which cannot be changed)
  3. Now DO NOT INSTALL ANY DRIVERS YET !!! Instead COPY the entire "PROGRAM FILE" three to drive D.
  4. NOW start REGEDIT.
  5. Search for Change EVERY key, value, & data containing "C:\Program Files" in beginning, middle or end of the string. Never mind whether it's a key, value or data. Just CHANGE the DRIVE LETTER from "C" to "D" - regardless of the syntax elsewise. (Take some breakes but remember to press F5 -key now and then, as it saves the work).
  6. On a system with a minimal installation of XP, this work can be done in 3-4 hours. With all drivers and heavy applications installed - hours will be turned into weeks!
  7. Search one extra time for Program Files connected to the C-partition. Then remove the "Program Files" from the C-partition. And empty the trash can.
  8. NOW install Windows-applications like the games and everything else You might want to have. Thereafter the drivers. And there after activate and install Your applications.

IF the "Program Files" reappear, it due to an installation. Just uninstall and read installation information more carefully.

It's even possible to separate "DOCUMENTS" from "SETTINGS", the entire Windows are built on the system registry , not the other way around. But changing partition of "Program Files" are less "dangerous" than other deep changes in the registry. Whether this is possible for Windows Vista, 7, 8 and 10 is beyond my knowledge.

Please do NOT attempt to do the registry-changes as described above unless you UNDERSTAND the general principle. It's NOT an ordinary 1-8 guide.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .