解决Windows 8.1无法修改的锁屏界面

几个月前,咱决定把Windows 8升级到8.1,反正是免费的嘛,但是升完级居然没法修改锁屏界面了。
p0
这个界面就一直卡在加载的状态,一开始倒也没什么,大不了不改了。

不过除此之外还有别的问题:
p1
改不了语言选项,装个别的输入法都不行(我是要Microsoft Japanese IME)

上网搜了一下,只看到装第三方软件解决问题的,反正我是不愿意。

这时候想起Mark的Webcast了,于是决定用Process Monitor看看。

When in doubt, run Process Monitor!

于是开着Process Monitor,我又试了一次更改锁屏界面,然后看到了这么几条:
p2
反正我是觉得蛮有意思的,说不定问题就在这里,于是跑去修改了这些文件夹的属性,没用。

没有头绪的时候怎么办?弄台正常的机器过来对比咯

马上打开VirtualBox,花了30多分钟安装了一台Windows 8.1的虚拟机,然后上网找破解(因为我自己的是正版所以破解还得现找=A=),把ProcMon拷进去,运行,开始捕捉,然后修改锁屏界面,保存,获得了一个日志记录。

接下来,把日志拷出来,和我电脑上的做对比,看见了一个不一样的地方:
p3
熟悉Windows的应该知道,DllHost.exe是进程外COM服务的宿主进程。看来改个锁屏界面还是蛮复杂的,还用到COM。

回到自己的电脑的日志,虽然有看到DllHost.exe,不过注意参数就会发现不对。没有一个DllHost.exe的processid和虚拟机上的那个实际负责修改锁屏界面的DllHost.exe一样。
p4

COM故障?于是去自己的电脑的注册表里看了,HKCR\CLSID{133eac4f-5891-4d04-bada-d84870380a80}是存在的,对比一下虚拟机的,没有区别。InProcServer32里指向shell32.dll。
p5
保险起见还是运行了一次regsvr32,先regsvr32 /u shell32.dll,然后regsvr32 shell32.dll,没用

于是问题清楚了,COM的激活过程里有问题,但是也没见到虚拟机里的SystemSettings.exe访问这个键值,那么到底是怎么激活的?

去掉过滤器之后,搜索{133eac4f-5891-4d04-bada-d84870380a80},发现这个:
p6
taskhost.exe,任务计划宿主程序。

Windows超复杂

在我的电脑上没见到这个程序,于是我用Process Explorer找到了负责计划任务的svchost.exe,添加过滤器,看见两边都有访问到C:\Windows\System32\Tasks\Microsoft\Windows\Shell\CreateObjectTask,但是我的电脑上的svchost.exe没有继续启动taskhost.exe。

计划任务里有问题

打开taskschd.msc,找到CreateObjectTask,问题立刻清晰了:
p7

而在虚拟机上:
p8

点了任务计划程序右边的“启动”,再修改锁屏界面,一切正常。停止之后又出问题。

看来得改一下启动方式
p9
本着“反正电脑已经有问题了就随便玩吧”的心态,把这里改掉了
p11

不过蹦出来了一个“请输入账户S-1-5-18的密码”,S-1-5-18是本地系统的安全标识符,哪来的密码咯

于是拿出PsExec,以本地系统账户启动了MMC控制台,再修改设置,问题解决

p10 p12

锁屏界面的图是百度贴吧的xichris画的,赞一个=w=

两个Process Monitor的记录文件:正常的 有问题的

解决Windows 8.1无法修改的锁屏界面》有2个想法

发表评论