How to Relocate C:\Users to D:\Users in Windows 7/Vista Using Robocopy and Junction Points


2 views

When dealing with Windows installations that have recovery partitions, you'll often encounter drive letter inconsistencies between normal operation and recovery environments. The recovery console typically mounts the system partition as C:\, while your actual OS might use D:\ during installation. This creates special challenges when moving user profiles.

Here's the bulletproof method I've used in production environments:

:: Copy all user data while preserving attributes
robocopy /mir /xj C:\Users D:\Users

:: Create directory junction after reboot
mklink /J C:\Users D:\Users

The key trick is performing these operations from the recovery console where drive letters are reversed. The /mir flag ensures perfect mirroring, while /xj prevents junction point copying issues.

For systems with existing profiles, add these registry tweaks post-migration:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList]
"ProfilesDirectory"="D:\\Users"
"Default"="D:\\Users\\Default"

After migration, verify with these PowerShell commands:

# Check junction point
Get-ChildItem C:\ | Where-Object {$_.Attributes -match "ReparsePoint"}

# Verify profile locations
Get-WmiObject Win32_UserProfile | Select LocalPath

Common issues include permission problems (fix with icacls) or residual hardcoded paths in registry (search for "C:\Users" in regedit).

While some suggest using Windows Easy Transfer or sysprep, these often break application settings. The robocopy method preserves:

  • NTFS permissions
  • File attributes
  • Symbolic links
  • ADS streams

When dealing with Windows installations, particularly in multi-drive systems, administrators often need to relocate the Users directory from the system partition (typically C:\) to another drive. This becomes especially tricky in Windows 7 due to its partition handling during recovery scenarios.

Windows 7 creates a reserved partition that appears as C:\ in recovery console, while your actual system drive might show as D:\. This behavior necessitates careful handling to ensure the directory move persists after reboot.

Here's the most reliable method I've found through extensive testing:

robocopy /mir /xj C:\Users D:\Users
mklink /J C:\Users D:\Users

However, when working in recovery console where drive letters are shifted:

robocopy /mir /xj D:\Users E:\Users
mklink /J D:\Users E:\Users

The combination of Robocopy's mirroring capability and NTFS junction points creates a seamless transition:

  • /mir flag ensures complete directory structure replication
  • /xj prevents copying of junction points which could cause infinite loops
  • The junction created with mklink maintains the original path structure

Before executing this operation:

  1. Create a full system backup
  2. Boot into recovery console or safe mode
  3. Verify drive letters using 'diskpart list volume'
  4. Ensure target drive has sufficient space (minimum 1.5x source size)

After completing the migration and reboot:

dir C:\Users
fsutil reparsepoint query C:\Users

This should show the junction point status and confirm proper redirection.

For those preferring GUI methods:

  • Use Windows Easy Transfer for individual profiles
  • Modify registry keys (HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList)
  • Third-party tools like SymMover

However, the robocopy/mklink method remains the most reliable for complete directory relocation.