有时 Windows 电脑的用户名在安装系统时被设置成了中文的,导致用户目录出现了中文(如 C:\Users\桐人),结果又要用一些对中文的支持很烂的程序(点名批评 Anaconda 系列,到了2202年还弄不明白那几个b脚本的中文支持😅)。这种情况下我的通常推荐是重装,但有时我们的电脑里东西太多了,重装很不方便。因此就想要去修改用户目录名。

然而,网上修改用户名的方法质量参差不齐,有的甚至有相当冒险的成分(如直接在要改名的用户登录时进行操作),加上微软在一些特殊情况下的奇特处理(不知道啥情况下会把整个目录重置或删除掉),酿成了许多惨案。因此我在这里分享一下我多次测试成功,保证安全(但不保证完美)的方案。

提示:若你电脑上的环境过于复杂(如有大量包含用户目录上路径的配置文件等),那还是建议重装,否则可能会出一些暗病。同时建议备份用户目录下极为重要的文件(如.ssh文件夹等)。完成后,进行下面的步骤:

  1. 启用 Administrator 用户:打开管理员模式下的 Windows PowerShell,输入:Enable-LocalUser Administrator
  2. 注销当前用户,登录 Administrator 用户。注意不是切换用户,需要完全注销。重启,登录 Administrator 用户。经验表明经常有注销不干净最后出锅的情况。
  3. 在 Administrator 用户打开 Windows PowerShell:
    1. 先输入 Rename-LocalUser -Name 旧用户名 -NewName 新用户名
    2. 再输入 Get-LocalUser | Select-Object Name, Sid
    3. 记录下要修改用户的 SID
  4. 打开注册表编辑器,定位到 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\,在下面找到想改的 SID,在右边找到 ProfileImagePath 这个键。将这个键里中文的那个目录名改成新用户的用户名
  5. 在文件资源管理器里,去 C:\Users 把实际的目录名也改成新用户的用户名
  6. 使用 Registry Finder 工具(可下载 Archive 64-bit),在 Administrator 用户下替换注册表中的值。
    1. 先 Edit - Find,选 Entire Registry,搜索旧的用户目录如(C:\Users\旧用户名
      Windows 下修改用户目录名的详细方法 【安全·完整】
    2. 注意 Search Options 中点 Data Types,取消选择 REG_BINARY。在结果页中检查有没有不能改的东西,对于这些要右击 - Remove from list
      (这里因为虚拟机系统太干净了没有结果,随便截图看看)
    3. 最后 Edit - Replace in Find Results,将“C:\Users\旧用户名”改成“C:\Users\新用户名
    4. 如果提示有些值替换失败,是正常现象
  7. 注销 Administrator 用户,登录新用户
  8. 在新的用户中用 Registry Finder 进行替换:同样是用 Registry Finder,但搜索时 Where to Search 要换成 Key: HKEY_CURRENT_USER\
  9. 检查桌面、文档、下载、图片等位置的关联是否正常,如果不正常需要手动重定向。注意不要进行“移动”操作。OneDrive 也可能出问题,可能需要重新配置 OneDrive。
  10. 最后在新用户里打开管理员 PowerShell,输入 Disable-LocalUser Administrator 禁用 Administrator 用户。

这样就修改完成了。


不想被自己的惰性打败。