首先,重要警告:千万不要尝试强行修改 C:\Users\ 下的文件夹名。
非英语的用户 Profile 目录名可能带来问题
只能说很无奈,这是一个事实,却也可能是一个问题:当你在安装系统之初就直接使用微软账号登录时,可能导致最终你在使用 Windows 时,你用户 Profile 文件夹的名字为非英语——会是你在微软账号中填写的名字。比如我的,显示为“计节”,而不是英语的 jijie,或者我常用的 ciznx (如下图)。
本来我不认为这是什么问题,虽然安装系统之初我隐约是有一些担扰的,但一直以来也没出什么状况,我也就没有太花心思去处理了。问题是,当这个路径的值是中文,或其他非英语文字,一些应用程序可能无法正常运行。比如 free pascal、python 等老一辈的程序,还比如一些歪国仁写的半调子开源程序。
具体描述
在 Windows 中,这是一个重要的文件夹。作为用户 Profile 文件夹,几乎所有与用户相关的配置、应用程序数据等都默认保存到这个目录的下级目录中。一般来说,如果直接使用 %UserProfile% 的环境变量来取它的值,是安全的(如下图),但如果将其值取出,并置于文件中以便后续处理步骤,则有可能出现意外的问题。
遗憾的是,软件的质量总是参差不齐的,我们要面对这个现实。然后不禁要喷一下 Windows 设计者欠考虑的一环:谁让它默认使用这么奇葩的路径策略呢,导致应用程序们跑不动!
今天在安装一个 npm 包的时候,问题终于出现了,一个开源的 C++ 项目中,出现了一个 ANSI 编码的 vcxproj 文件,并且其中将我的用户 Profile 路径写了进去,也就是那些非英语字符。于是,编译器也很爽快抛出了错误:出现了无法识别的字符。
解决方法(重命名用户 Profile 目录)
更糟糕的是,解决方法并不简单。毕竟,这样一个重要的文件夹,系统一旦开启,几乎无时无刻不需要使用它,所以正常情况下很难重命名。而且,由于系统会记录并使用这个路径,就算手快改掉了,也很有可能引发不可预知的问题。
如果你很幸运地还没有使用微软账号、只用了“本地账号”,而且正在准备给计算机添加一个微软账号的话,那么可以先添加这个微软账号,并且在该账号登录之前,使用在计算机管理中为其改名。如果很不幸,像我一样,已经登录了这个微软账号,想给它的 Profile 文件夹改名,则需要费一番周折,并可能引发不可预知的问题。
请参考此回答中的详细步骤,以及此处的图文教程来修改文件夹的名称,但你需要自行承担由该两篇教程所带来的可能的后果。
其大致步骤是,使用另一个管理员账号,进入“管理工具”并将重命名用户为英文、重命名 C:\Users\ 中对应的文件夹为英文,进入注册表,修改 ProfileList 中的记录,以及其他记录了该路径的值,均改为新值。重启,搞定!
启示
微软账号会在你一用电脑的时候,就吭你一把,尤其是开发人员,请注意这一点。因此,建议在安装系统时,仅使用本地账号,之后再将它绑定到在线微软账号,或另外添加微软账号。