部分软件不支持中文路径,但Windows注册的时候有些人可能用了中文用户名,因此这里提供两种方法将用户文件夹改为英文,各有优劣,自行选择。
法一不需要另外复制文件,但要修改注册表。
法二不需要修改注册表,但要复制部分文件。
环境
Windows 10/11
方法一:重命名文件夹并修改注册表
Step-0 创建还原点,备份注册表
这里用作意外操作失误时恢复系统的保险手段,各位自行百度,这里就不再做一遍演示了。
Step-1 登录另一个管理员账户
下面二个选项选其一操作即可
Option-1 新建一个管理员账户
控制面板 -> 用户账户 -> 管理其他账户 -> 在电脑设置中添加新用户
将其他人添加到这台电脑 -> 我没有这个人的登录信息 -> 添加一个没有Microsoft账户的用户 ->输入用户名(英文)和密码,然后修改该账户的类型为管理员(Administrator)。然后注销要修改的账户,登录新账户。
Option-2 启用Administrator账户
前置条件
- Windows 专业版
右键此电脑,计算机管理,找到用户和组,在用户里面打开administrator的属性,取消“账户已禁用”的钩。 然后注销你现在用的账户,再用administrator账户登陆,然后就有权限改这个文件夹的名字了。
家庭版没有此选项可用,建议是找个序列号升级到专业版后操作,当然你也可以按其他教程的方法在家庭版开启Administrator
Step-2 重命名用户名文件夹
改你原来的用户文件夹名字
可能遇到的问题
结束占用的进程ctrl+alt+del 呼出任务管理器 -> 性能 -> 打开资源管理器 -> CPU -> 关联的句柄 ->搜索句柄,结束他,然后重新重命名,就OK了。
Step-3 更改注册表下用户对应值
改完名字以后,按win+R
键,输入regedit
进注册表HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList
,找到你原来目录名字的项,更改ProfileImagePath
键为新的目录名就好了。
改完重启一下然后执行下一步。
Step-4 批量替换注册表相关路径值
这里我电脑上搜到4000+项相关值,手动是不可能了,这里给出一个注册表修改工具和自己写的Python脚本。
修改前还是建议先备份一下。
使用Registry Workshop修改
到Registry Workshop官网下载免费试用:http://www.torchsoft.com/en/download.html
1. 搜索
ctrl+F
搜索Users\用户名
,不区分大小写搜索
这里因为直接用了别人的图,所以图中是
C:\Users\用户名
并且选中了区分大小写的选项,实际上注册表里面这部分路径有时是以%环境变量%\users\用户名
的形式出现的,而且路径是大小写不敏感的。
出来如下结果
2. 替换
然后ctrl+R
这里一样的,去掉
C:\
和区分大小写选项
把含有“中文用户名”的地方,替换成对应的英文即可
使用Python脚本修改
前置条件
- Python 3+
写的一个小脚本,有些小瑕疵,但一般你原来的用户名不是那种很容易出现的(可能会把别的地方同名改了)都没问题
- 把
old_user_name
改成你原来的用户名 new_user_name
改成你现在的用户名- 运行脚本
- 手动处理脚本无法更改的一些值(可能会有2~3个值没权限或者长度太长改不了),这里重新跑一次脚本,会显示出来
import winreg
import json
import time
old_user_name = r"原来的用户名"
new_user_name = r"要改的用户名"
# 记录更改
logs = []
# 根注册表键
root_keys = [
{"key": winreg.HKEY_CLASSES_ROOT, "path": "HKEY_CLASSES_ROOT"}, # 存储应用和shell的信息
{"key": winreg.HKEY_CURRENT_USER, "path": "HKEY_CURRENT_USER"}, # 当前用户自定义的信息
{"key": winreg.HKEY_LOCAL_MACHINE, "path": "HKEY_LOCAL_MACHINE"}, # 计算机系统所有的信息
{"key": winreg.HKEY_USERS, "path": "HKEY_USERS"}, # 所有用户信息
{"key": winreg.HKEY_PERFORMANCE_DATA, "path": "HKEY_PERFORMANCE_DATA"}, # 性能数据
{"key": winreg.HKEY_CURRENT_CONFIG,
"path": "HKEY_CURRENT_CONFIG"}, # 本地计算机系统的硬件配置文件
{"key": winreg.HKEY_DYN_DATA, "path": "HKEY_DYN_DATA"}, # windows98后的版本无法使用
]
keys = []
keys.extend(root_keys)
cnt = 0
errors_cnt = 0
while keys:
_key = keys.pop()
key = _key["key"]
path = _key["path"]
try:
sub_keys_num, values_num, last_modified_time = winreg.QueryInfoKey(
key)
except OSError:
continue
# 遍历键值
for i in range(values_num):
value_name, value, value_type = winreg.EnumValue(key, i)
if type(value) == str:
# 不分大小写匹配,user\old_user_name容错用户名
target = "users\ + old_user_name
target = target.lower()
_value = value.lower()
if _value.find(target) != -1:
cnt += 1
print(f"[+]Found source in {path}: {value}")
new_value = value.replace(old_user_name, new_user_name)
try:
winreg.SetValueEx(key, value_name, 0,
value_type, new_value)
log = {"path": path, "value_name": '',
"value_type": value_type, "old_value": value, "new_value": new_value}
logs.append(log)
except OSError:
# 传递给系统调用的数据区域太小。
errors_cnt += 1
# 遍历子键
for i in range(sub_keys_num):
try:
sub_key_name = winreg.EnumKey(key, i)
# 访问子键未命名值
value = winreg.QueryValue(key, sub_key_name)
if type(value) == str:
# 不分大小写匹配,user\old_user_name 用户名
target = "users\ + old_user_name
target = target.lower()
_value = value.lower()
if _value.find(target) != -1:
cnt += 1
print(f"[+]Found source in {path}: {value}")
new_value = value.replace(old_user_name, new_user_name)
value_type = winreg.REG_SZ
try:
winreg.SetValue(key, sub_key_name,
value_type, new_value)
log = {"path": path+"\+sub_key_name, "value_name": '',
"value_type": value_type, "old_value": value, "new_value": new_value}
logs.append(log)
except OSError:
# 传递给系统调用的数据区域太小。
errors_cnt += 1
# 插入子键到键表
sub_key = winreg.OpenKey(
key, sub_key_name, access=winreg.KEY_ALL_ACCESS)
_sub_key = {"key": sub_key, "path": path+"\+sub_key_name}
keys.append(_sub_key)
except (PermissionError, OSError):
continue
print(f"[=]{cnt} value matched, {cnt-errors_cnt} replaced, {errors_cnt} errors.")
# 把修改记录保存到 regedit_log_*.json 文件下
file_name = "regedit_log_" + str(time.time()) + ".json"
with open(file_name, "w", encoding="utf-8") as f:
f.write(json.dumps(logs, ensure_ascii=False, indent=4))
print(f"[+]logs saved into {file_name}")
方法二: 新建新账户,并做账户数据同步与转移
没试过这个方法,转载来的
- 打开设置(或控制面板)在帐户(也叫做用户帐户)中新建一个帐户,这个帐户必须是是本地帐户。新建时填写的用户名便是 User 目录下的显示名称(浏览器中点击图片看高清大图)。
- 紧接着提权到管理员权限。
Win10 2017年2月更新后,单纯的新建本地账户不会出现新文件夹,要先注销然后登陆那个本地账户才能出现!!!
登陆之后User就有这个文件夹了,这个不要担心,先进行下一步:
- 点最后一个菜单,将当前帐户(旧帐户)的自动同步设置开启!开启!开启(Win 8、8.1、10 都有此功能,而且默认的是开启的,下面的图是 错!误!示!范!)
- 当前帐户切换到本地。
注销,登陆刚刚创建的本地账户。 在新创建的帐户中登陆微软帐号,开启同步设置,这样就好了。
由于有些用户数据如桌面、我的文档,AppData还残留在旧的账户里,所以可以将旧账户里面的对应数据直接复制到新账户里即可
简单点就是,新建本地帐户,填写想要的用户名,在新帐户中登陆微软帐号,同步设置,能节省一大堆麻烦的事情。