Files
opensource.onixbyte.com/docs/zh-hans/blogs/rename-windows-user-profile-to-english.mdx
siujamo 8cb21379e0 feat: 添加文章
添加 IDEA 因为中文路径导致 Git Clone 报错的文章与修改 Windows 用户名的文章
2026-10-08 16:54:48 +08:00

186 lines
8.9 KiB
Plaintext
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
title: 将 Windows 用户名(用户目录)修改为英文的完整步骤
tags:
- windows
- user-profile
- registry
- troubleshooting
author:
name: Zihlu Wang
email: real@zihluwang.me
---
import { Kbd } from "@rspress/core/theme"
在 Windows 上使用中文用户名,系统本身能正常工作,却会给不少开发工具添麻烦——最典型的就是 [JetBrains IDE 用 SSH 方式 Clone 时反复要求输入密码](./jetbrains-git-ssh-clone-password-prompt.md)。根源在于用户目录 `C:\Users\张三` 里的非 ASCII 字符:Git、Node、Python、Docker 以及各类 CLI 工具在读取这条路径时各用各的编码,稍有不慎就会解析失败。
把用户名改成英文可以一劳永逸地解决这类问题。整个过程不算复杂,但对**步骤顺序**和**重启时机**比较敏感,下面按顺序逐步说明。
:::warning 开始之前
本文的操作会修改**注册表**和**用户配置文件目录**,属于有风险的操作。动手前请务必:
- 备份重要数据(尤其是桌面、文档、以及各类软件的配置目录);
- 确认当前账户拥有**管理员权限**;
- 建议先创建一个系统还原点,以便中途出问题时回退;
- 严格按本文的顺序执行,不要跳步,尤其是重启的时机。
:::
## 整体思路
Windows 里的「用户名」其实对应两样东西:
1. **账户显示名**——登录界面、开始菜单上看到的名字;
2. **用户配置文件目录名**——`C:\Users\<名字>` 这一层文件夹。
麻烦之处在于:Windows 不允许在用户处于登录状态时重命名它的配置文件目录;同时注册表里记录了这个目录的**绝对路径**,光改文件夹名而不改注册表,会导致下次登录时挂载不到原配置文件。
因此需要借助一个「过渡账户」来完成:
> 建临时账户 → 用它登录 → 改文件夹名 → 改注册表 → 回到原账户。
## 一、获取现有用户的 SID
以当前(中文用户名的)账户登录,打开 PowerShell 或命令提示符,执行:
```powershell
whoami /user
```
输出类似:
```text
用户信息
------------------
用户名 SID
================= ============================================
desktop-abc\张三 S-1-5-21-1234567890-1234567890-1234567890-1001
```
记下结尾那串 `S-1-5-21-...-1001`,它就是后面要找的 `{旧用户 SID}`。
如果想一次列出所有本地账户及其 SID,可以用:
```powershell
wmic useraccount get name,sid
# 或在较新版本的 PowerShell 中:
Get-LocalUser | Select-Object Name, SID
```
## 二、创建一个新的本地 Windows 用户
打开 `设置 → 账户 → 其他用户 → 添加账户`,在「如何登录?」这一步选择 **「我没有这个人的登录信息」**,接着选择 **「添加一个没有 Microsoft 帐户的用户」**,创建一个纯英文名的**本地账户**,例如 `tempadmin`。
创建完成后,在「其他用户」列表中选中该账户,进入「更改账户类型」,把它**提升为管理员**。
这个账户只是「过渡用」的,作用是让我们能在**原账户已注销**的状态下,去操作它的文件与注册表。
## 三、注销当前用户,登录新创建的账户
保存好手头的工作,注销当前账户,重启电脑,然后用刚才创建的临时账户登录。
## 四、重命名用户目录
在临时账户下打开**文件资源管理器**,进入 `C:\Users`,把 `张三` 重命名为你想要的英文名(例如 `JohnDoe`):
```text
C:\Users\张三 → C:\Users\JohnDoe
```
如果提示「文件夹正在使用」,说明原账户还有进程在运行(后台服务、同步网盘、常驻程序等)。可以先彻底重启再试,或者改用命令行重命名:
```powershell
Rename-Item -Path "C:\Users\张三" -NewName "JohnDoe"
```
:::tip 命名建议
新名字建议只用英文字母和数字,并且不要带空格。虽然 `C:\Users\zhang san` 也能用,但空格同样会让部分命令行工具出问题。
:::
## 五、修改注册表中的 ProfileImagePath
按 <Kbd>Win</Kbd> + <Kbd>R</Kbd>,输入 `regedit` 回车,打开注册表编辑器,定位到:
```text
Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\{旧用户 SID}
```
也就是第一步记下的那串 SID 对应的项。双击右侧的 `ProfileImagePath`,把「数值数据」从:
```text
C:\Users\张三
```
改为:
```text
C:\Users\JohnDoe
```
确定后关闭注册表编辑器。
:::warning 这一步最关键
如果目录名改了、注册表却没改(或改错),下次登录会进入一个**临时配置文件**——桌面空白、文档为空,看起来像「用户数据全丢了」。其实数据还在 `C:\Users\JohnDoe` 里,只要回头核对 SID 与 `ProfileImagePath` 是否一致就能恢复。
另外,如果 `ProfileList` 下出现了两个相同 SID 的项,其中一个是带 `.bak` 后缀,说明此前发生过配置文件加载失败。此时应确保正确的那一项(不带 `.bak`)的 `ProfileImagePath` 指向新目录,并把重复项清理掉。
:::
## 六、注销临时账户并重启
再次注销临时账户,然后重启电脑。
## 七、登录原账户,等待 Windows 自动修复
用**原来的账户**登录(此时登录界面显示的名字可能还是中文,下一步再改)。登录过程中 Windows 会检测到配置文件路径的变化并自动修复,期间可能出现「正在准备 Windows」之类的提示,耐心等待它完成。
登录后确认两件事:
- `C:\Users\JohnDoe` 是你的用户目录,桌面、文档等个人文件都在;
- 打开命令提示符或 PowerShell 执行 `echo %USERPROFILE%`,输出应为 `C:\Users\JohnDoe`。
## 八、修正系统环境变量中的路径
右键 `此电脑 → 属性 → 高级系统设置 → 环境变量`,逐条检查**系统变量**与**用户变量**,把所有硬编码了旧路径的项,从 `C:\Users\张三\...` 改为 `C:\Users\JohnDoe\...`。
判断时注意区分:
- 形如 `%USERPROFILE%\AppData\...` 的项**不用改**,它会在运行时展开,会自动指向新目录;
- 只有**写死的绝对路径**才需要改,例如 `C:\Users\张三\scoop\shims`、`C:\Users\张三\AppData\Local\Programs\Python\Python312`;
- 用户变量里的 `TEMP`、`TMP` 通常是 `%USERPROFILE%\AppData\Local\Temp` 形式,一般无需修改。
## 九、修改账户的显示名
按 <Kbd>Win</Kbd> + <Kbd>R</Kbd>,输入 `control userpasswords2` 回车。在弹出的用户列表中选中原账户那一行,点击 **属性**,把「用户名」改为新的英文名,确定即可。
这一步只影响登录界面和界面里显示的名称,不改变 SID,也不会影响前面已经改好的目录。
## 十、清理临时账户(可选)
确认一切正常、重启后仍能正常登录之后,可以把过渡用的临时账户删掉:进入 `设置 → 账户 → 其他用户`,选中它并选择「删除」,再删掉 `C:\Users\tempadmin` 目录。
:::tip
删除前建议先重启一次并确认新账户一切正常,免得删完才发现还有问题需要回过头来用临时账户。
:::
## 改完之后:部分软件可能需要重装
用户名(用户目录)变更后,凡是把**绝对路径写进配置、服务、计划任务或快捷方式**的软件,都可能因为路径失效而无法启动或丢失配置。常见需要留意的有:
- **包管理器与运行时**——Scoop、Chocolatey、Anaconda、nvm,以及全局安装的 Node / Python 包,它们的 shims 和配置文件里往往写着旧路径;
- **开发工具**——JetBrains 系列 IDE(配置与缓存目录就位于旧路径下)、Docker Desktop、WSL 发行版、Git 的全局配置与凭据存储;
- **注册为服务的程序**——数据库、Web 服务器等,Windows 服务里通常固化了可执行文件与数据目录的绝对路径;
- **桌面快捷方式与「最近使用」列表**——可能全部失效;
- **各类云盘 / 同步客户端**——需要重新指定本地目录。
遇到这类情况时,**卸载后重新安装**通常是最省事、最可靠的处理方式;少数软件也可以通过重新指定路径或「修复安装」解决。建议改完用户名后,把日常使用的开发工具逐个打开验证一遍,发现异常就重装。
## 小结
把 Windows 用户名(尤其是用户目录)改成英文,是一次「一次疼、长期省」的操作:流程本身不复杂,但对步骤顺序和重启时机比较敏感。只要严格按顺序来——记 SID、建临时账户、改目录、改注册表、回来修正环境变量与显示名——就能顺利完成。
改完之后,[JetBrains IDE 用 SSH Clone 时要求输入密码](./jetbrains-git-ssh-clone-password-prompt.md) 这类由非 ASCII 路径引起的问题也会一并消失。
> 本文转载整理自抖音用户 **@90后科技说**,原视频地址:[https://v.douyin.com/2hqIZUsG9YM/](https://v.douyin.com/2hqIZUsG9YM/)