How do I change the default location for a users home directory in Vista?

For individual folders (My Docyuments, My Pictures, etc., the "Special Folders") I do the registry/GPO thing you alluded to. However, if I want to move the entire folder structure I cheat. Move the folder to a new location, and then create a junction pointing the old folder to the new folder. So all your programs will still think the folder is c:\users\username but that's just a junction point to d:\users\username.


I've spent a long time researching this and finally managed to do it on my own machine.

There are two scenarios here: a new install, and a machine that is already installed/used.

For a new install, you can (apparently) modify the autounattend.xml file (unresearched link here, no guarantees, I haven't tried)

For a machine that is already installed, there are two problems to overcome:

  1. Windows 'locking' some files, so you can't copy them (ntuser.dat)
  2. Changing where windows goes to look for the profiles on startup.

For problem 1, you can either go the round about route:

  • copy Default and Public folders to the new location
  • modify their location in registry
  • create a new user (which will be created in the new location)
  • login with new user account and copy the other users
  • lots of detail on this here

Or you can boot from a Recovery disk and copy stuff across.

For problem 2, you can either do a find and replace everywhere in the registry (risky), or create a symlink/junction from the default location to the new location.

The find and replace solution is also detailed on the previously linked page, but it turns out that you still have to create the symlink, otherwise Windows Update has problems.

WHATEVER you choose to do, you will need to get familiar with symlinks/junctions. Lots of comments on Josh's blog mention ROBOCOPY, which you can't use to copy Junctions. If you don't recreate them, you won't notice immediately as most (if not all) have the hidden attribute anyway, but you may experience reverse compatibility problems with non-Vista apps.

This blog post provides a bit more (too much) detail about this issue, plus a script to help recreating the symlinks/junctions.

Another blog, another approach.


I've recently had the same issue. I wanted to use Microsoft's SteadyState program on a machine with pre-existing user accounts on C:\USERS that I wanted to move on D:. I followed these steps:

  1. I imaged the hard disk to be able to recover from the disaster I expected to experience.
  2. I used Windows Easy Transfer to copy these accounts to an external hard drive.
  3. I deleted the accounts.
  4. I installed Windows SteadyState (works on XP and Vista), and used it to create accounts with exactly the same name as the one I deleted. I created each one on the D:\ partition (SteadyState allows you to choose!)
  5. I started Windows Easy Transfer to restore the previously saved accounts, telling it to copy over the accounts of the same name. It finds them all on D:\ and that is where it puts the copy! Success.

The one proviso is that Windows Easy Transfer doesn't make a perfect copy of most non-microsoft apps.

Hope this helps.


You CAN change the location of AppData, just a bit longer :

Open AppData Right Click on Local Click the location tab, and click Move Create an AppData folder somewhere, and create a folder Local in it Select it, click apply to move it, just like you did for Documents.

Repeat for LocalLow and Roaming.

This should be far better than the symlink OR the sysprep method.