Win10更改默认家目录位置

0x00 情景

电脑装了一块128G的SSD,我想让他更多的跑IDE或者游戏。而当初安装Win10的时候用了默认的C:\Users作为用户家目录,所以现在这个目录占用了很多的空间。虽然可以通过设置Documents等文件夹的位置属性从而把C盘里的目录重新定位到其他地方(可能是Hard Link实现的),但是家目录下的其他东西还是占用了很多,这些包括各大全家桶(jetbrain)等的配置以及默认项目文件。所以摸索了一番,成功的找到了一个较为完美解决方案,可以把系统默认的家目录指定到其他地方,包括PowerShell里面的前缀,于是在此记录一下。

0x01 做好备份

为了以防万一,先做好还原点。用Cortana搜索创建还原点,配置C盘的系统保护,点击下面创建立即创建一个还原点。

0x02 开启管理员账号

win10下Administrator账号和Guest账号默认是关闭的,经常使用的是安装的时候你创建的账号,所以为了在执行系统权限的命令时不弹出UAC,以及成功的设置注册表,先开启管理员账号。

1
net user Administrator /active:yes #大写A

为了安全,设置一个密码

1
net user Administrator * # 输入密码

0x03 移动目录

按住SHIFT重启进入命令行界面,选择Administrator,输入密码,重启进入命令行界面,然后开始移动一些用户相关的目录。以我的磁盘符为例,SSD为C,HHD为E

1
robocopy /COPYALL /MIR /XJ C:\Users E:\Users

参数解释:

  • /COPYALL 复制所有信息,等同/COPYDATSOU,D=数据,A=属性,T=时间戳,S=安全,O=所有者,U=审核信息
  • /MIR 复制的同时也删除在目标文件夹里存在但源文件夹里并没有的文件
  • /XJ exclude junctions, 排除硬链接。
1
robocopy /COPYALL /MIR /XJ C:\ProgramData E:\ProgramData

这个步骤可能会有些文件会失败,比如NVDIA目录的一些文件。这时候不要慌,可以用一个Linux的安装盘然后挂载C盘和E盘,把复制失败的文件复制过去。

复制很快,然后进入下一步。

0x04 修改注册表

重启电脑,登录Administrator账号,cmd -> regedit,依次进入HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList

编辑ProfileList右边的字符串值,一般修改如下:

  • Default从 %SystemDirve%\Users\Default 修改为 E:\Users\Default
  • ProfilesDirectory从 %SystemDirve%\Users 修改为 E:\Users
  • ProgramData从 %SystemDirve%\ProgramData 修改为 E:\ProgramData
  • Public从 %SystemDirve%\Users\Public 修改为 E:\Users\Public

0x05 注销重新登录

打开PowerShell,发现家目录已经变成E:\Users\{foo}

搞定。

0x06 意外处理

如果出现类似

User Profile Service service failed the sign-in. User profile cannot be loaded

可以利用之前的还原点恢复。