OK, so I’ve finally gotten around to setting up a Vista machine as my main machine.  I opted to go with an SSD drive for the system drive and planned on putting all the user data on a different drive.  After doing a little research, the best solution to accomplish this with the least amount of hastle (or so I thought) would be to copy the content of Users to the new drive and set up a junction (symbolic link) to the new location.  Well, that was certainly easier said than done.  Everything I read suggested to do all the copying and sym-linking from the command prompt from the Vista setup disk because the Users directory is in use once Vista is running.  The problem with doing that turned out that the drive letter assigned to the new home for Users wasn’t the same during setup as when running Vista.  After multiple attempts to get the setup instance of Vista to use the same drive letters as the running instance, including re-installing Vista after failed attempts rendered the Users folder unusable, I decided there had to be a better way.

During my initial research, I found mention of people using MOUNTVOL instead of MKLINK.  The main difference is that MOUNTVOL makes the entire disk volume available at the mounted location rather than just a directory.  Depending on your application, that may be too restrictive.  But for my application, that was fine as that’s what I wanted to do anyway.  And the huge benefit of using MOUNTVOL is that the pointer is to a physical drive, not a logical drive letter.  After installing and booting to the setup CMD shell, renaming the Users directory to something else, I created an empty directory and mounted the drive on it.  I then used ROBOCOPY to copy the Users directory content back to Users, thus restoring and preserving the settings and security attributes.

So, here’s my recipe:

Install Vista (if you haven’t already)
Boot to the setup CD and once the installer is running press Shift+F10 to get to the shell

Then, on the boot drive:

ren Users Users_save
mountvol

(Note: no parameters on the mountvol command to get the volume label of the disk you want to use.  Then use the shell’s clipboard feature to copy the volume label to the clipboard.)

mountvol \Users <paste the volume label here>
robocopy \Users_save \Users /MIR /E /XJ

Reboot and enjoy.