How to Relocate User Profile Directory in Windows Vista: A Complete Guide for Developers Managing AppData and Special Folders


2 views

html

In Windows Vista, the default user profile path is C:\Users\%USERNAME%, containing critical directories like AppData, Documents, and registry-backed shell folders. Unlike later Windows versions, Vista lacks native support for profile relocation without registry or symbolic link workarounds.

1. Backup and Prepare
Create a system restore point and export these registry keys:
reg export "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList" profiles.reg
robocopy "C:\Users\%USERNAME%" "D:\Profiles\%USERNAME%" /mir /xj

2. Modify Registry Entries
Update these keys (admin privileges required):
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\S-1-5-21-*]
"ProfileImagePath"="D:\\Profiles\\%USERNAME%"

For developers needing to handle relocated paths in applications:

// C# example to resolve special folders
string appData = Environment.GetFolderPath(
Environment.SpecialFolder.ApplicationData);
// PowerShell alternative
[Environment]::GetFolderPath('MyDocuments')

Create junction points for stubborn applications:
mklink /J "C:\Users\John\Documents" "D:\Profiles\John\Documents"
mklink /J "C:\Users\John\AppData" "D:\Profiles\John\AppData"

If applications still write to original locations:
1. Use Process Monitor to detect path references
2. Check for hardcoded paths in application manifests
3. Verify NTFS permissions on the new location:
icacls "D:\Profiles" /grant "%USERNAME%":(OI)(CI)F

For domain environments, modify the default profile path in Group Policy:
Computer Configuration → Administrative Templates → System → User Profiles → "Set user home folder"


In Windows Vista, the user profile contains several critical components:

  • AppData (Roaming, Local, and LocalLow)
  • Documents (My Documents)
  • Desktop items
  • Application-specific data

The default location C:\Users\[username] becomes problematic when:

  • System drive space is limited
  • You want to separate OS from user data
  • Creating disk images without personal data

Windows stores profile paths in the registry. For system-wide changes:

Windows Registry Editor Version 5.00

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

This affects new user accounts. For existing accounts, see the next section.

For current users, follow these steps:

  1. Log in as Administrator
  2. Open System Properties → Advanced → User Profiles Settings
  3. Select the profile → Click "Copy To"
  4. Set permissions to allow Everyone Full Control temporarily

Command line alternative (run as Admin):

robocopy C:\Users\username D:\Users\username /MIR /COPYALL /XJ
wmic useraccount where name="username" set Profile="D:\Users\username"

Many applications hardcode paths. Create symbolic links as a fallback:

mklink /J "C:\Users\username\Documents" "D:\Users\username\Documents"
mklink /J "C:\Users\username\AppData" "D:\Users\username\AppData"

For batch processing, use this PowerShell script:

$folders = @("Documents","Pictures","AppData","Desktop")
foreach ($folder in $folders) {
    $source = "D:\Users\$env:USERNAME\$folder"
    $target = "C:\Users\$env:USERNAME\$folder"
    if (!(Test-Path $source)) { New-Item -Path $source -ItemType Directory }
    if (Test-Path $target) { Remove-Item -Path $target -Recurse -Force }
    New-Item -ItemType Junction -Path $target -Value $source
}

For domain environments, configure via GPO:

Computer Configuration → Administrative Templates → System → User Profiles
Set "Set roaming profile path for all users" to "D:\Users\%username%"
  • Permission errors: Take ownership first with takeown /f "D:\Users" /r /d y
  • Application crashes: Check Event Viewer for path-related errors
  • Login failures: Verify registry permissions under HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList