Win10修改用户名及user文件夹名称的一波三折
背景
在初次安装Win10的时候,一时手欠,把自己的中文名字作为用户名登录了,而且字还打错了,导致user文件夹的名字也跟随了这个蛋疼的名字。而即使是在把帐户名和计算机描述都修改后,user文件夹的名字仍然维持初次登录时的样子。
时隔半年,终于忍无可忍,在网上搜索了下教程,通过将Win10账户暂时离线成本地的方式,将user文件夹修改成了姓名的拼音,整个人都舒服了。然而,有舍有得,这个世界最不缺少的就是坑……
第一坑:Python编译环境失效
可以预见的,因为修改了user文件夹名称,涉及到Path相关的编译器环境都需要重新关联,简单的一番修改后,满意地在cmd环境中对着Python 3.6的编译器进进出出,我的嘴角勾勒出了一丝满足的yin…微笑。
然而我还是年轻的,我以为修改了Path的环境变量就好了,但我万万没想到,pip这个浓眉大眼的居然也叛变了革命,在cmd下执行pip命令时,直接显示不是合法的内部指令
了。
一番百度,群众猜测应该是pip内部的部分文件是跟user文件关联的,可能也需要重新关联,然而……太麻烦了,作为新时代的小年轻,我们应该大胆猜测,更大胆的行动,所以我决定重新安装pip,这里说一下,网友提供的python -m pip install -U pip
命令不能直接通过升级来进行覆盖安装或修复,会提示已安装pip。靠谱的方法是先在\$Lib\site-packages\
中将pip先删除,然后在PyPI中下载pip的tar文件解压后,使用python setup.py install
进行安装。如果选择下载whl文件的话……这就是一个先有鸡还是先有蛋的问题了。
顺利搞定,在PyCharm中愉悦地玩耍各种Python库,真是极乐啊。
第二坑:XMind失效
然而事情总是没有这么顺利,坑,永远在那儿,等着你去踩,或早,或晚。
之后某天,日常装逼,哦不是,日常整理思维导图的时候,打开XMind,显示依赖文件无法打开(已经忘记错误提示了,意会),打开失败……WTF,这肯定是幻觉,淡定地拍桌、关闭、重新打开的三连之后……仍然失败。根据错误提示,在XMind的根目录中找到XMind-original.ini
文件,发现里面的configuration
和data
项的关联路径是\$\user\Application Data\
,百度搜索发现这是一个常用文件夹,在\$\user\
中,关闭隐藏受保护的系统文件
后就可以看到。双击该文件夹,系统提示访问拒绝
……日子是不能过了啊。挣扎了半天,我果断把XMind-original.ini
的configuration
和data
项的路径改到了\$\user\AppData\
,然后……OK~!
顺利搞定,在XMind中各种思维导图,真是极乐啊。
第三坑:Office打印功能失效
然而事情总是没有这么顺利,坑,永远在那儿,等着你去踩,或早,或晚。
之后某天,想要将Outlook中的一封邮件打印出来备份,驾轻就熟的ctrl + p
then Microsoft print to PDF
后,系统提示打印机未准备好
……Hmm,这可就新鲜了啊,我尼玛刚用Chrome打印了一篇…文章,这没两分钟,你居然说打印机就没准备好了?
淡定的再次打印,淡定的使用打印-发送到OneNote,淡定的使用实体打印机打印……全他妈挂了!
然后使用Chrome又试了一圈,都他妈可以!
我颤抖的右手狼狈地取下眼镜……
这尼玛全喷粪!!!
又试了一圈软件的打印功能,结果如下:
+ 非微软系统统OJBK
+ Chrome OK
+ XMind OK
+ ……
+ 微软系
+ Outlook 不OK
+ Word 不OK
+ Excel 不OK
+ PowerPoint 不OK
+ 记事本 不OK
+ 画图 OK
WTF!
WTF!!
WTF!!!
这种情况只好猜测是打印机跟Office和记事本之间的关联乱掉了…
首先搜索微软社区,关键词
1. Office不能打印
2. 记事本不能打印
3. Office打印设置
4. ……
全部没有卵用。
其中有一篇的问答介绍了一段命令行:
DISM/Online /Cleanup-image /Scanhealth
DISM/Online /Cleanup-image /Restorehealth
Sfc /scannow
同样无卵用。
之后在百度上疯狂的搜索,有在服务中打开Print Spooler
的,有修改注册表的,还有莫名奇妙的。
然后突然有位老哥提到这个问题他之前碰到过:
是windows权限的问题。登陆用户的temp目录的权限不够,所以打印发送任务无法生成临时文件。修改权限即可。
赶紧再尝试一下,百度搜索Win10 temp文件
,参考结果,找第二个里的用户帐户临时文件夹
,\$\AppData\Local\Temp
或者cmd + %temp%
后即可找到,再使用这篇文章中的方法给temp文件提权,世界,再次美妙了!
procedure
CloseSysErrDlg(AppHandle:
THandle;
const
ExeFile:
string);
var
h,
h2,
hChild:
HWND;
pid,
pid2:
DWord;
winTxt:
array[0..200]
of
Char;
winCls:
array[0..200]
of
Char;
exeName:
string;
begin
exeName
:=
LowerCase(ExtractFileName(ExeFile));
pid
:=
0;
GetWindowThreadProcessID(AppHandle,
@pid);
h
:=
GetWindow(GetForegroundWindow,
GW_HWNDFIRST);
while
h
<>
0
do
begin
h2
:=
h;
h
:=
GetWindow(h,
GW_HWNDNEXT);
if
(h2
<>
vAppHandle)
and
IsWindowVisible(h2)
then
begin
GetWindowThreadProcessID(h2,
@pid2);
if
pid2
<>
pid
then
begin
GetWindowText(h2,
winTxt,
SizeOf(winTxt)
-1);