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:
- Create a full system backup
- Boot into recovery console or safe mode
- Verify drive letters using 'diskpart list volume'
- 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.