Back your system and files up before doing anything.
Currently if you have split profile locations you cannot upgrade Windows 10. This might be the case for other operating systems.
This article came about because I had already moved my documents, pictures and music to my D: drive by changing the location of those libraries. It is an easy thing to move your libraries but I kept on finding programs such as VirtualBox created their own library folder and this was back in my profile on the C: drive so I decided that I might aswell move my whole profile on to the D: drive. There were serveral methods I came across all with various pros and cons:
- Xcopy / RoboCopy - These softwares allow the moving of files and folders whilst keeping them permissions and other things and are what I have based this tutorial on.
- Profile Relocator - This does not move the profiles
- SysPrep - Using the Microsoft SysPrep you can repackage your windows installation and during this you can tell it to move your profiles. This is not an easy process.
- USMT - The Microsoft User State Migration Tool is very powerful and complicated to configure. This has the ability to transfer profiles.
- Copy To and Move To profile options - This has been removed in later version of Windows. I think it is present in Windows 7 and hidden in Windows 8.
- 3rd Party Transfer Software - This software tends to be designed to transfer a profile from one machine to another but potentially can be used to move a profile from one loaction to another on the same PC
- Symbolic Links (symlinks) - Using a symbolic link allows you to keep using the C:\Users location virtually while the real files are located elsewhere on you r PC. This has potential to be a really good solution if done right.
- Moving Libraries - This is where you only move all of your files (Documents, Pictures and Music etc..) but not the actual profiles. This is what I original did and although it is fully supported by windows it is not my preferred option.
- Windows Easy Transfer - This use to be the way to move profiles but it has been removed in Windows 10.
Moving your profile from one location to another on the same PC is not an easy thing to do, not any more, because you need to make sure that file permission are correct and that all references point to the new location properly. My process outlined below goes over all aspects of moving your profile correctly. This will should work on XP, Vista, Windows 7, Windows 8 and Windows 10.
One other thing to consider is are you just moving 1 User Profile or do you want to move all of your profiles in which case you will find is is also possibly to change the default location for new profiles easily.
Prerquisite Software
- RoboCopy - All modern versions of Windows have this built in to the command line (except XP). This seems to be a replacement for xcopy.
- ChoEazyCopy - Simple and powerful GUI to Microsoft RoboCopy tool (optional).
- Registry Editor (select one)
- RegCool - Free
- RegEditX Pro - Extend Windows Registry Editor (REGEDIT). There is a 30 day evaluation copy available.
- Profile Relocator - Profile Relocator is a step-based application that allows the re-locating of the Windows Users profile directory (optional).
1. Create a User Folder (optional)
I would recommend you create a user folder to hold your profiles (eg D:\Users) even if it is just for your one profile at the minute. This folder will have the exact same permissions as on the C: drive so you know the permissions are not going to cause any problems. It is possibly to put this folder anywhere but I prefer to use D:\Users\ as in this example.
Also read about changing the default profile locations before doing anything in this section as you might not want to do this step.
Method 1 - Manual
- Create the folder D:\Users\
- Manually duplicate the permissions from C:\Users\ to D:\Users\ folder by having both folder permissions windows open and then going through them one by one to make them the same.
Method 2 - RoboCopy / ChoEazyCopy
This method takes a little setting up and understanding but this method will do all of the heavy lifting for you whilst you know there wont be any mistakes. You can use either the RoboCopy command directly or you can use ChoEazyCopy whichs configures and uses RoboCopy via a GUI. Both methods do exactly the same thing.
RoboCopy Command
RoboCopy.exe "C:\" "D:\" *.* /E /LEV:2 /DCOPY:T /SEC /COPYALL /MT:8 /XF *.* /XD "C:\$RECYCLE.BIN" "C:\$SysReset" "C:\$Windows.~WS" "C:\Boot" "C:\Documents and Settings" "C:\MSOCache" "C:\PerfLogs" "C:\Program Files" "C:\Program files (x86)" "C:\ProgramData" "C:\Recovery" "C:\System Volume Information" "C:\VTRoot" "C:\Windows" "C:\Windows.old" /L
- Copy the rule above to a text editor and make sure you add any folder exclusions that you need to it. The folders that are configured cover most folders but do not forget to check hidden and system folders aswell.
- Remove the /L switch if you want to run this live (optional)
- Open a command prompt as Administrator
- Paste the modfied code in a command prompt and run
ChoEazyCopy Settings File
<ChoAppSettings> <MaxStatusMsgSize>1000</MaxStatusMsgSize> <SourceDirectory>C:\\</SourceDirectory> <DestDirectory>D:\\</DestDirectory> <RoboCopyFilePath>RoboCopy.exe</RoboCopyFilePath> <Files>*.*</Files> <CopyNoEmptySubDirectories>false</CopyNoEmptySubDirectories> <CopySubDirectories>true</CopySubDirectories> <OnlyCopyNLevels>2</OnlyCopyNLevels> <CopyFilesRestartableMode>false</CopyFilesRestartableMode> <CopyFilesBackupMode>false</CopyFilesBackupMode> <FallbackCopyFilesMode>false</FallbackCopyFilesMode> <UnbufferredIOCopy>false</UnbufferredIOCopy> <EncrptFileEFSRawMode>false</EncrptFileEFSRawMode> <CopyFlags /> <CopyDirTimestamp>true</CopyDirTimestamp> <CopyFilesWithSecurity>true</CopyFilesWithSecurity> <CopyFilesWithFileInfo>true</CopyFilesWithFileInfo> <CopyFilesWithNoFileInfo>false</CopyFilesWithNoFileInfo> <FixFileSecurityOnFiles>false</FixFileSecurityOnFiles> <FixFileTimeOnFiles>false</FixFileTimeOnFiles> <DelDestFileDirIfNotExistsInSource>false</DelDestFileDirIfNotExistsInSource> <MirrorDirTree>false</MirrorDirTree> <MoveFiles>false</MoveFiles> <MoveFilesNDirs>false</MoveFilesNDirs> <AddFileAttributes /> <RemoveFileAttributes /> <CreateDirTree>false</CreateDirTree> <CreateFATFileNames>false</CreateFATFileNames> <TurnOffLongPath>false</TurnOffLongPath> <RunAgainWithNoChangesSeen>0</RunAgainWithNoChangesSeen> <RunAgainWithChangesSeenInMin>0</RunAgainWithChangesSeenInMin> <RunHourStartTimeTicks>0</RunHourStartTimeTicks> <RunHourEndTimeTicks>0</RunHourEndTimeTicks> <CheckRunHourPerFileBasis>false</CheckRunHourPerFileBasis> <InterPacketGapInMS>0</InterPacketGapInMS> <CopySymbolicLinks>false</CopySymbolicLinks> <MultithreadCopy>8</MultithreadCopy> <CopyNODirInfo>false</CopyNODirInfo> <CopyWithoutWindowsCopyOffload>false</CopyWithoutWindowsCopyOffload> <CopyOnlyFilesWithArchiveAttributes>false</CopyOnlyFilesWithArchiveAttributes> <CopyOnlyFilesWithArchiveAttributesAndReset>false</CopyOnlyFilesWithArchiveAttributesAndReset> <ExcludeFilesWithGivenNames>*.*</ExcludeFilesWithGivenNames> <ExcludeDirsWithGivenNames>"C:\$RECYCLE.BIN";"C:\$SysReset";"C:\$Windows.~WS";"C:\Boot";"C:\Documents and Settings";"C:\MSOCache";"C:\PerfLogs";"C:\Program Files";"C:\Program files (x86)";"C:\ProgramData";"C:\Recovery";"C:\System Volume Information";"C:\VTRoot";"C:\Windows";"C:\Windows.old";</ExcludeDirsWithGivenNames> <ExcludeChangedFiles>false</ExcludeChangedFiles> <ExcludeNewerFiles>false</ExcludeNewerFiles> <ExcludeOlderFiles>false</ExcludeOlderFiles> <ExcludeExtraFilesAndDirs>false</ExcludeExtraFilesAndDirs> <ExcludeLonelyFilesAndDirs>false</ExcludeLonelyFilesAndDirs> <IncludeSameFiles>false</IncludeSameFiles> <IncludeTweakedFiles>false</IncludeTweakedFiles> <ExcludeFilesBiggerThanNBytes>0</ExcludeFilesBiggerThanNBytes> <ExcludeFilesSmallerThanNBytes>0</ExcludeFilesSmallerThanNBytes> <ExcludeFilesOlderThanNDays>0</ExcludeFilesOlderThanNDays> <ExcludeFilesNewerThanNDays>0</ExcludeFilesNewerThanNDays> <ExcludeFilesUnusedSinceNDays>0</ExcludeFilesUnusedSinceNDays> <ExcludeFilesUsedSinceNDays>0</ExcludeFilesUsedSinceNDays> <ExcludeJunctionPoints>false</ExcludeJunctionPoints> <AssumeFATFileTimes>false</AssumeFATFileTimes> <CompensateOneHourDSTTimeDiff>false</CompensateOneHourDSTTimeDiff> <ExcludeJunctionPointsForDirs>false</ExcludeJunctionPointsForDirs> <ExcludeJunctionPointsForFiles>false</ExcludeJunctionPointsForFiles> <NoOfRetries>0</NoOfRetries> <WaitTimeBetweenRetries>0</WaitTimeBetweenRetries> <SaveRetrySettingsToRegistry>false</SaveRetrySettingsToRegistry> <WaitForSharenames>false</WaitForSharenames> <ListOnly>true</ListOnly> <ReportExtraFiles>false</ReportExtraFiles> <VerboseOutput>false</VerboseOutput> <IncludeSourceFileTimestamp>false</IncludeSourceFileTimestamp> <IncludeFullPathName>false</IncludeFullPathName> <PrintByteSizes>false</PrintByteSizes> <NoFileSizeLog>false</NoFileSizeLog> <NoFileClassLog>false</NoFileClassLog> <NoFileNameLog>false</NoFileNameLog> <NoDirListLog>false</NoDirListLog> <NoProgress>false</NoProgress> <ShowEstTimeOfArrival>false</ShowEstTimeOfArrival> <NoJobHeader>false</NoJobHeader> <NoJobSummary>false</NoJobSummary> </ChoAppSettings>
NB: C:\\ (source) and D:\\ (target) it is intentional to have 2 trailing slashes and is a workaround for a bug when using root folders in ChoEazyCopy. This bug has been reported but only applies to ChoEazyCopy but not when using RoboCopy directly.
- Install ChoEazyCopy
- Create a new file called copy-user-folder.ezy
- Copy and paste the code above into it and save
- Run ChoEazyCopy as an administrator
- Open copy-user-folder.ezy with ChoEazyCopy
- Add any folder exclusions that you need to it. The ones that are present cover most folders but do not forget to check hidden and system folders aswell.
- Remove the /L (ListOnly) switch if you want to run this live (optional)
- Save any changes.
- Run the command by clicking the play arrow at the top.
Switches Explained
- "C:\" (Source) - Files/Folders Source
- "D:\" (Target) - Files/Folders Target
- *.* (Files) - Which files to select. We have to put something in here so i use *.*
- /DCOPY:T (CopyDirTimestamp) - Preserve folder timestamps
- /COPYALL (CopyFilesWithFileInfo) - Copy files with their attributes
- /SEC (CopyFilesWith Security) - Keeps file ACL permissions as they are in the source
- /E (CopySubDirectories) - Copy all sub directories including empty ones
- /MT:8 (MultithreadCopy) - Do multi-threaded copies with n threads. Makes copying quicker.
- /LEV:2 (OnlyCopyNLevels) - Only copy folders to 1 level below (i.e. C:\Users)
- /XD (ExcludeDirsWithGivenNames) - Exclude all folders except C:\Users. With RoboCopy you select all and then exclude what you dont want.
- /XF *.* (ExcludeFilesWithGivenName) - *.* excludes all files because we only want the C:\Users folder.
- /L (ListOnly) - This switch is a test switch which prevents copying, timestamp changes or deleting of any files and is present to prevent accedentally running this command with setting things up properly. Remove this when you want to perform this command for real.
2. Change Default location for User Profiles (optional)
This can easily be done with a piece of software called Profile Relocator. This is ideally used when you first setup a new PC before you create any profiles (except the one you were required to do to set windows up which you can delete later), however you can still use this on a live PC.
Profile relocator does not move exisiting profiles.
Instructions
- Login to an Administrator account
- Install Profile Relocator
- Run the software and follow the onscreen instructions.
This is what it does according to the readme:
- If the user has explicitly enabled the option, PR will copy the Public and Default folders from the old location - which varies depending on the version of the operating system - to the new location. The original folders aren't modified in any way.
- PR updates the following registry keys to reflect the new location the user chose:
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\ProfilesDirectory HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\Public HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\Default
- To allow the process to be reverted back to its previous state, PR will then create - or update if it already exists - the following registry key with the location of the profiles directory it found when it PR was started:
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\!ProfileRelocator-Original
Notes
- You can make these changes manually in the registry so do not need this software for that but it makes things easier.
- You get the option as to whether you want to copy the Public and Default folders and use them in the new location.
- I do not know how Profile Relocator copies the Public and Default folders and therefore how it maintains their permissions. I am guessing that it does.
- How To | How To Move A User Profile To Another Drive or Partition In Windows - YouTube - This is just showing the same thing that Profile Relocator does but also shows that when you change the Users folder location in the registry to D:\Users then Windows will automatically create the D:\Users folder when you create a new account along with the D:\Public profile.
3. Copy User Profile to new location
This process will copy the selected profile to the new location with all of the ACL permission intact. In this example I am moving a single profile from C:\Users to D:\Users. This process will copy all profiles that you do not specify in one action so you do not have to repeat this for every profile if doing more than one.
You can use either the RoboCopy command directly or you can use ChoEazyCopy whichs configures and uses RoboCopy via a GUI. Both methods do exactly the same thing.
Notes
- You cannot run these commands from within a profile that you are going to move. You must logout into another account that has administrator rights and that you are not going to move. You can create a temp administrator account for this.
- Do not login to these profiles untill these instructions tell you that it is ok.
- Disable your antivirus if you are moving folders with files in that might trigger it.
- After a migration always check your error log
- If find errors, you might find that running these in safemode gives a better result.
- You cannot just use copy and paste because the ACL permissions and other things are not preserved.
RoboCopy Command
RoboCopy.exe "C:\Users" "D:\Users" *.* /E /ZB /DCOPY:T /SEC /COPYALL /SL /MT:8 /XD "C:\Users\All Users" "C:\Users\Default" "C:\Users\Default User" "C:\Users\Default.migrated" "C:\Users\DefaultAppPool" "C:\Users\LogMeInRemoteUser" "C:\Users\Public" "C:\Users\UpdatusUser" /R:1 /W:1 /UNILOG:"C:\profile-copy.log" /L
- Copy the rule above to a text editor and make sure you add any User Profile folders to the folder exclusion list that you do not want to copy. The list that is in the example code above covers most default/system folders present but do not forget to check for other hidden and system folders aswell.
- Remove the /L switch if you want to run this live (optional)
- Open a command prompt as Administrator
- Paste the modfied code in a command prompt and run
ChoEazyCopy Settings File
<ChoAppSettings> <MaxStatusMsgSize>1000</MaxStatusMsgSize> <SourceDirectory>C:\Users</SourceDirectory> <DestDirectory>D:\Users</DestDirectory> <RoboCopyFilePath>RoboCopy.exe</RoboCopyFilePath> <Files>*.*</Files> <CopyNoEmptySubDirectories>false</CopyNoEmptySubDirectories> <CopySubDirectories>true</CopySubDirectories> <OnlyCopyNLevels>0</OnlyCopyNLevels> <CopyFilesRestartableMode>false</CopyFilesRestartableMode> <CopyFilesBackupMode>false</CopyFilesBackupMode> <FallbackCopyFilesMode>true</FallbackCopyFilesMode> <UnbufferredIOCopy>false</UnbufferredIOCopy> <EncrptFileEFSRawMode>false</EncrptFileEFSRawMode> <CopyFlags /> <CopyDirTimestamp>true</CopyDirTimestamp> <CopyFilesWithSecurity>true</CopyFilesWithSecurity> <CopyFilesWithFileInfo>true</CopyFilesWithFileInfo> <CopyFilesWithNoFileInfo>false</CopyFilesWithNoFileInfo> <FixFileSecurityOnFiles>false</FixFileSecurityOnFiles> <FixFileTimeOnFiles>false</FixFileTimeOnFiles> <DelDestFileDirIfNotExistsInSource>false</DelDestFileDirIfNotExistsInSource> <MirrorDirTree>false</MirrorDirTree> <MoveFiles>false</MoveFiles> <MoveFilesNDirs>false</MoveFilesNDirs> <AddFileAttributes /> <RemoveFileAttributes /> <CreateDirTree>false</CreateDirTree> <CreateFATFileNames>false</CreateFATFileNames> <TurnOffLongPath>false</TurnOffLongPath> <RunAgainWithNoChangesSeen>0</RunAgainWithNoChangesSeen> <RunAgainWithChangesSeenInMin>0</RunAgainWithChangesSeenInMin> <RunHourStartTimeTicks>0</RunHourStartTimeTicks> <RunHourEndTimeTicks>0</RunHourEndTimeTicks> <CheckRunHourPerFileBasis>false</CheckRunHourPerFileBasis> <InterPacketGapInMS>0</InterPacketGapInMS> <CopySymbolicLinks>true</CopySymbolicLinks> <MultithreadCopy>8</MultithreadCopy> <CopyNODirInfo>false</CopyNODirInfo> <CopyWithoutWindowsCopyOffload>false</CopyWithoutWindowsCopyOffload> <CopyOnlyFilesWithArchiveAttributes>false</CopyOnlyFilesWithArchiveAttributes> <CopyOnlyFilesWithArchiveAttributesAndReset>false</CopyOnlyFilesWithArchiveAttributesAndReset> <ExcludeFilesWithGivenNames /> <ExcludeDirsWithGivenNames>"C:\Users\All Users";"C:\Users\Default";"C:\Users\Default User";"C:\Users\Default.migrated";"C:\Users\DefaultAppPool";"C:\Users\LogMeInRemoteUser";"C:\Users\Public";"C:\Users\UpdatusUser";</ExcludeDirsWithGivenNames> <ExcludeChangedFiles>false</ExcludeChangedFiles> <ExcludeNewerFiles>false</ExcludeNewerFiles> <ExcludeOlderFiles>false</ExcludeOlderFiles> <ExcludeExtraFilesAndDirs>false</ExcludeExtraFilesAndDirs> <ExcludeLonelyFilesAndDirs>false</ExcludeLonelyFilesAndDirs> <IncludeSameFiles>false</IncludeSameFiles> <IncludeTweakedFiles>false</IncludeTweakedFiles> <ExcludeFilesBiggerThanNBytes>0</ExcludeFilesBiggerThanNBytes> <ExcludeFilesSmallerThanNBytes>0</ExcludeFilesSmallerThanNBytes> <ExcludeFilesOlderThanNDays>0</ExcludeFilesOlderThanNDays> <ExcludeFilesNewerThanNDays>0</ExcludeFilesNewerThanNDays> <ExcludeFilesUnusedSinceNDays>0</ExcludeFilesUnusedSinceNDays> <ExcludeFilesUsedSinceNDays>0</ExcludeFilesUsedSinceNDays> <ExcludeJunctionPoints>false</ExcludeJunctionPoints> <AssumeFATFileTimes>false</AssumeFATFileTimes> <CompensateOneHourDSTTimeDiff>false</CompensateOneHourDSTTimeDiff> <ExcludeJunctionPointsForDirs>false</ExcludeJunctionPointsForDirs> <ExcludeJunctionPointsForFiles>false</ExcludeJunctionPointsForFiles> <NoOfRetries>1</NoOfRetries> <WaitTimeBetweenRetries>1</WaitTimeBetweenRetries> <SaveRetrySettingsToRegistry>false</SaveRetrySettingsToRegistry> <WaitForSharenames>false</WaitForSharenames> <ListOnly>true</ListOnly> <ReportExtraFiles>false</ReportExtraFiles> <VerboseOutput>false</VerboseOutput> <IncludeSourceFileTimestamp>false</IncludeSourceFileTimestamp> <IncludeFullPathName>false</IncludeFullPathName> <PrintByteSizes>false</PrintByteSizes> <NoFileSizeLog>false</NoFileSizeLog> <NoFileClassLog>false</NoFileClassLog> <NoFileNameLog>false</NoFileNameLog> <NoDirListLog>false</NoDirListLog> <NoProgress>false</NoProgress> <ShowEstTimeOfArrival>false</ShowEstTimeOfArrival> <UnicodeOutputLogFilePath>C:\profile-copy.log</UnicodeOutputLogFilePath> <NoJobHeader>false</NoJobHeader> <NoJobSummary>false</NoJobSummary> </ChoAppSettings>
- Install ChoEazyCopy
- Create a new file called copy-user-profile.ezy
- Copy and paste the code above into it and save
- Run ChoEazyCopy as an administrator
- Open copy-user-profile.ezy with ChoEazyCopy
- Add any User Profile folders to the folder exclusion list that you do not want to copy. The list that is in the example code above covers most default/system folders present but do not forget to check for other hidden and system folders aswell.
- Remove the /L (ListOnly) switch if you want to run this live (optional)
- Save any changes.
- Run the command by clicking the play arrow at the top.
Switches Explained
- "C:\Users" (Source) - Files/Folders Source
- "D:\Users" (Target) - Files/Folders Target
- *.* (Files) - Which files to select. Select all files
- /DCOPY:T (CopyDirTimestamp) - Preserve folder timestamps
- /COPYALL (CopyFilesWithFileInfo) - Copy files with their attributes
- /SEC (CopyFilesWith Security) - Keeps file ACL permissions as they are in the source
- /E (CopySubDirectories) - Copy all sub directories including empty ones
- /SL (CopySymbolicLinks) - Copy symbolicLinks versus the target. Not sure this does anything didnt harm my profile when I moved it.
- /ZB (FallbackCopyFilesMode) - I think this is volume shadow copy and is used when a file is locked and a 'Access is Denied' error is returned.
- /MT:8 (MultithreadCopy) - Do multi-threaded copies with n threads. Makes copying quicker.
- /LEV:2 (OnlyCopyNLevels) - Only copy folders to 1 level below (i.e. C:\Users)
- /XD (ExcludeDirsWithGivenNames) - Exclude all folders in C:\Users except the profile(s) that you want to move. With RoboCopy you select all and then exclude what you dont want.
- UNILOG:"C:\profile-copy.log" (UnicodeOutputLogFilePath) - If you dont use this Eazy Copy will crash.
- /R:1 (NoOfRetries) - As default the retry limit is 1 Million which is daft so this switch will limit it to 1. In Eazy Copy if you set this to zero the switch does not get added.
- /W:1 (WaitTimeBtweenRetries) - Default time is 30 seconds which is far to long so this sets it to 1 second. In Eazy Copy if you set this to zero the switch does not get added.
- /L (ListOnly) - This switch is a test switch which prevents copying, timestamp changes or deleting of any files and is present to prevent accedentally running this command with setting things up properly. Remove this when you want to perform this command for real.
4. Change the Registry to reflect the Profile's new location
Once the profile has been moved the registry needs some changes making to it so things work properly. This needs to be done for each profile moved.
Step 1 - Change Profile Image Path
- You should be logged in with the temporary Administrator account
- Create a System Restore Point (optional)
- Open Regedit as an Administrator
- Change the Profile Image Path from C:\Users\{username} to D:\Users\{username} in the registry key below. Each profile with have a slightly different parent folder in the registry for obvious reasons. It will not look exactly like it does below.
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\S-1-5-xx-xxxxxxxxxx-xxxxxxxxxx-xxxx\ProfileImagePath
- Change the profile state from 0 to 1 in the registry key below. The base type should stay as Hexidecimal. I do not know why you need to do this but this YouTube video tells you to.
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\S-1-5-xx-xxxxxxxxxx-xxxxxxxxxx-xxxx\State
- Rename the orginal profile folders i.e. C:\Users\{username} to C:\Users\{username}.bak. This prevents accidental use and that only the new profile will be used. You can delete it at a later date as it should no longer be needed or used.
Once you have done all of the above for each of the moved profiles, reboot the computer.
Step 2 - Change the static references in the registry
We need to change all references of C:\Users\{username} to D:\Users\{username} - this is also a good reason for keeping the same folder format but on the D: drive as it is slightly easier to change the locations in the registry.
For this we will use a Registry editor that will allow us to do a text search and replace within the registry. Install this via your temporary administrator account.
This procedure needs to be done for each profile.
- Log into the moved profile
- Create a System Restore Point (optional)
- Pick Your REG software
- RegCool
- Open RegCool as an Administrator
- Search the registry for C:\Users\{username} in Values, Data and all HKEY hives and I did NOT match case.
- In the results window at the bottom select all of the results
- right click on the highlighted results and click replace
- You should now replace C:\Users\{username} with D:\Users\{username}
- Make sure you double check the strings are correct as this cannot be undone
- Click start/replace
- When I did this I found some registry keys would cause the software to crash. In this case just start the software again, do the same search but instead of selecting the whole block of results, select half and keep going until the are all done.
- Some keys will not change or if they do they just change back again. they must be protected somehow. But it does not harm to leave them.
- These are the keys I had issue with:
- [HKEY_LOCAL_MACHINE\SOFTWARE\4Developers\RCrawler\History]
- [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows Defender\Exclusions\Paths]
- [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\AppCompatCache]
- RegEditX Pro
- Open RegEditX Pro as an Administrator
- In the menu at the top select (RegEditX-->RegEditX Crawler)
- Search the registry for C:\Users\{username} in Values, Data and all HKEY hives and I did NOT match case.
- Highlight all of the results
- On the right click Replace
- You should now replace C:\Users\{username} with D:\Users\{username}
- Make sure you double check the strings are correct as this cannot be undone
- Do NOT confirm every replacement
- Click Start
- The program will appear to crash or lockup. It is still working. I think this is bug.
- RegCool
- Logout
NB: Some entries in the registry have the format C:\Users\USERNAM~1\ (old file format) you might want to change these but I suspect that this is fromm old buggy software I no longer have
Once you have done the process above for each moved account then you should reboot the computer.
5. Housekeeping
Now you have moved your profile you might need to do some of the follwoing to keep you computer running correctly
- Update AV exclusions in both your choosen AV and Windows Defender
6. Thats it Folks
All the changes have been made and hopefully you now have moved your profiles.
Known Issues
After I have finished moving my profile I noticed a couple of issues which might not always occur. These are easy enough to fix.
- Library Folders dont work - This could just be my PC but to fix this you should delete all of the libraies (files will be untouchjed) and then click recreate default
- Quick Access links might be come faulty - Delete/Unpin them and then re-add as required.
- Outlook PST references become broken causing error 0x8004010F. See my solution.
- ClassicShell menu layout is lost - If you have customised your start menu using classicshell and have spent ages arranging your menu, the arrangement will probably be lost. There might be a way to preserve this before moving profiles.
- Moving profiles to a non standard location can cause upgrade issues? - This might not be the case anymore in Windows 10 and might only have been an issue on older versions of windows because the profiles were moved wrong. Anything using Windows 8 is flaky and I think this is where most of the issues were caused by this.
There could be some other minor issues that occur because of the change of folder and file locations but should just be a case of changing settings in the various softwares.
Links
General
- How To Move A Windows User Profile Folder - YouTube - This uses Xcopy to move the User Profiles. This is not as complete as my tutorial.
- Moving User Profiles and Data in Windows 10 - Webinar - YouTube - Shows you how to use PC Mover and goes over USMT (Win10, Laplink PCmover and USMT).
- How to Move Your Windows 10 User Profile - Gives an overview about some methods to mvoe your profile. (Profile Relocator, Transwiz, PCmover)
- How to Backup / Restore / Transfer User Profile in Windows - YouTube - As a computer tech you have to backup and restore window user profile data on a daily basis, whether you have a corrupt windows user profile or you can boot your computer to backup your user profile data, well this video is for you, (Fab's AutoBackup).
- Don't move your Windows user profiles folder to another drive | ZDNet - I dont think this is the case, certainly with Windows 10.
- Create mandatory user profiles (Windows 10) | Microsoft Docs - Shows Copy To button
Registry Software
- RegEditX Pro - Extend Windows Registry Editor (REGEDIT). There is a 30 day evaluation copy available.
- Registry Replacer | CNET Download.com - Registry Replacer is a search-and-replace utility for the Windows Registry. It lets you search the contents of keys and key names for strings and replace them.
Microsoft User State Migration Tool (USMT) Software
- USMT GUI - Gui for MS User State Migration - This looks like a very comprehensive GUI for USMT. i.e. "Its a simple three-step procedure to backup a user profile and to restore the data and settings to another user profile /other AD"
- Migrate-WindowsUserProfile - Migrate Windows user profile to a new machine using Microsoft USMT with a PowerShell GUI.
Microsoft User State Migration Tool (USMT)
- Migrating User Profiles with the User State Migration Tool - Microsoft 70-680: 1.7 - YouTube
- SOLVED: Step By Step USMT Script To Migrate as Single User On Windows 10 - Up & Running Technologies Calgary - If you are replacing your Windows 10 hardware or just moving a user from one PC to another you can use User State Migration Tool (USMT).
- User State Migration Tool (USMT) Overview (Windows 10) | Microsoft Docs - You can use User State Migration Tool (USMT) 10.0 to streamline and simplify user state migration during large deployments of Windows operating systems. USMT captures user accounts, user files, operating system settings, and application settings, and then migrates them to a new Windows installation. You can use USMT for both PC replacement and PC refresh migrations.
- Migrate User Accounts (Windows 10) | Microsoft Docs - By default, all users are migrated. The only way to specify which users to include and exclude is on the command line by using the User options. You cannot specify users in the migration XML files or by using the Config.xml file.
3rd Party Transfer Software
- ForensiT Transwiz - Transwiz makes it easy to transfer your personal data and settings to a new computer.
- Easy Solutions to Copy and Migrate User Profile in Windows 10 - EaseUS - Using Windows Backup and EaseUS
- Laplink PCmover
RoboCopy GUI Software
- ChoEazyCopy - Simple and powerful GUI to Microsoft RoboCopy tool.
- Cinchoo - EazyCopy, yet another RoboCopy GUI - CodeProject - this is another of its home pages. GitHub is the primary though.
- Command Line GUI download | SourceForge.net - I think this replaces 'Better Robocopy Gui'.
- Better Robocopy GUI
- Add a Graphical User Interface (GUI) to the Microsoft Robocopy Command Line Tool | HowToGeek - Covers a few GUIs including RoboMirror.
- RoboMirror download | SourceForge.net - Very easy to use
- Free Utility: RichCopy, an Advanced Alternative to RoboCopy - this is old now but is linked to a lot.
RoboCopy
- windows server 2008 r2 - Using robocopy and excluding multiple directories - Super User - Apparently, including trailing slashes keeps robocopy from parsing the list of directories correctly
- /L (ListOnly) is like a test run
- Microsoft DOS robocopy command | Computer Hope
- ROBOCOPY hides destination Directory - In my case it was caused by the folder being transfered being tagged as a system folder so when it was nested in it's new parent folder that folder then became hidden.
- [SOLVED] Move shared folders, retain file & share permissions using Robocopy on Windows Server
- Robocopy – Copying files with file permissions (ACLs) and Importing file permissions / security information | Information Systems Security - This is a very simple method but use with caution because you could delete files that you wanted to keep. I have included this for reference only.
- Windows: Ignore errors with Xcopy and RoboCopy | Randy's Blog - To copy entire directory structures as quickly as possible and ignore all disk errors (useful in data recovery) either of the following commands should work with robocopy being the quickest (if you’ve got Vista/7 or XP with the XP Resource Kit installed). Both commands use source -> destination path order.
Xcopy
- HOW TO: Copy a Folder to Another Folder and Retain its Permissions | Microsoft - This is information about using xcopy.
- How to use xcopy to select specific folders(Not Files) within another folder - Stack Overflow
- Xcopy command : syntax and examples
- Using xcopy to copy files and folders and keeping the ntfs permissions - Geeks Hangout
- cmd - Xcopy Command excluding files and folders - Stack Overflow
Symbolic Links
- windows 7 - Can I use a Symbolic Link to 'move' C:Users to another drive? - Super User
- Using Symbolic Links to Save Space on Your SSD - This tutorial uses a software called Directory Linker which copys files and creates a symbolic link automatically.
- Move the Users Directory in Windows 7 - A tutorial showing you how to use Symbolic Links to move the Users Folder
SysPrep
- Move Users Folder Location in Windows 10 Installation & Upgrade Tutorials - A very indepth tutorial with videos on how to use Sysprep to move User profiles. The method described in this tutorial allows relocating Windows 10 main profile folder Users including all present and future user profiles and folders while installing Windows, before any user accounts are created, as well as later on an already installed system.
Managing Libraries
- How to move default Windows account folders to a second hard drive - YouTube
- Moving User Profile Folders in Windows 10 - YouTube
- How To Move User Profile Folders To Another Partition Without Symbolic Link | Next of Windows
- How to Enable Libraries in Windows 10 File Explorer
- File Explorer Libraries resetting on Wondows 10 - Microsoft Community - tells you how to restore the library defaults easily.
Quick Links
- How to Clean Up and Tame Quick Access in Windows 10 - This is a great tutorial on Quick Links.
- How to reset Quick Access folders to default? - Windows Central Forums - Gives the following solutions:
- In File Explorer go to the View tab then click Options. In the Privacy section click Clear (Clear File Explorer history).
- Run command prompt as admin and type the following command:
del %appdata%\microsoft\windows\recent\automaticdestinations\*
- Restore file to Windows 10 Quick Access - Microsoft Community
- Finally uncovered a way to restore a file to QuickAccess that was acceptable to me. If you go to view/options and clear history, removed files will return to QuickAccess. The negative is you've removed everything except pinned items from QuickAccess until you open them again and you have restored everything you have removed from showing up in QuickAcces
- Running SFC is pointless
NTFS Cut and Copy Permissions behaviour
- Permissions lost when copying/moving files and folders
- How permissions are handled when you copy and move files and folders | Microsoft
- Cut/paste file between folders no longer keep the original folder permissions - Super User
NTFS Extended Attributes