作死的开始
公司的电脑一直使用域账号的方式登陆,不过加域之后默认的策略是所有域账号都可以登陆,这个策略明显不太安全,今天决定把登陆策略改为只有自己的域账号和administrator可以登陆。
cmd中运行 gpedit
打开组策略编辑器,选择计算机配置
–Windows设置
–安全设置
–本地策略
–用户权限分配
可以看到用户权限这块有很多策略项,每个策略都有一个策略名和本策略适用的用户(组),这里我们需要修改的是允许本地登陆
、允许通过远程桌面服务登陆
和 拒绝本地登陆
三项。
分别打开三项策略,添加Administrators组到允许本地登陆
和允许通过远程桌面服务登陆
(Administrators组包含了本人的域账号和administrator用户),其他群组加入到 拒绝本地登陆
中。
搞定,重启电脑。
问题出现
电脑重启后发现使用任何账号都无法登陆了。不管是域账号,.\域
,administrator
都无法登陆。提示:不允许使用你正在尝试的登陆方式,请联系你的网络管理员。很明显,修改之后的组策略导致系统无法正常登陆了。
此时我发现,我给自己挖了一个大坑,并且跳了进去。。。
逻辑悖论: 无法登陆是由于组策略的设置导致的,然而,想要将组策略设置改回来,又必须得先登录进入系统。
怎么办
冷静3分钟后,决定找IT的同事帮忙,IT用U盘的PE系统启动了机器,然后读取C盘的密码文件,强制修改.\域
和administrator
的密码。之后重新尝试登陆,依然失败:不允许使用你正在尝试的登陆方式,请联系你的网络管理员。
看到这个情况,很遗憾,IT表示搞不定。
无奈,只能靠自己,将IT的PE盘借过来,进入系统打开C:\Windows\System32\gpedit.msc
尝试在PE系统中修改组策略。发现msc文件虽然可以打开,但是并无任何内容。难道是环境变量的问题?修改系统的Path变量,最前面加上C:\Windows\System32\;
重新尝试,依然无任何内容。究竟是什么原因呢?尝试在cmd中输入gpedit
回车,发现弹出一个错误框,缺少一个*api*.dll文件。到这里,原因似乎清晰了,PE系统为win8,而我的系统为win10,估计两个系统的gpeidt运行所依赖的dll不同。解决这个问题,需要自己做一个相同系统版本的PE,成本和风险太大,此路不通。
难道只剩重装这最后一条路了吗?
答案当然是NO,否则我也不会专门写一篇有价值的博客了,哈哈。
让我们再回头看看那个逻辑悖论: 无法登陆是由于组策略的设置导致的,然而,想要将组策略设置改回来,又必须得先登录进入系统。
转机
要想将组策略设置改回来,必须先登录进系统吗?常识告诉我们:YES!然而常识往往是狭隘的,修改组策略其实只需要调用一个cmd命令,我们只需要在不登陆系统的情况下将windows的命令提示框显示出来就可以了。
那么,如何做呢?
你有没有仔细观察过Windows的登陆界面?
没错,右下角的轻松使用很重要。
我们可以利用轻松使用当中的屏幕键盘。
屏幕键盘作为Windows的一个原装软件,它的运行文件就是:C:\Windows\System32\osk.exe
我们可以将这个文件替换为同目录下的cmd.exe
,这样进入登陆界面后点击屏幕键盘弹出的就是cmd命令提示框了。
进入PE系统,将C:\Windows\System32\osk.exe
备份到其他目录,然后删掉,将C:\Windows\System32\cmd.exe
改名为osk.exe
,重启进入登陆页,点击屏幕键盘,命令提示框就弹出来了。然后运行gpedit
,组策略编辑器就弹出来了。而且数据能够正常显示,此处也并没有出现用户权限问题。将之前的拒绝本地登陆策略置为空,重新域账号登陆,终于顺利进入系统!
后记
到此,问题也就告一段落了,值得注意的是,后面需要重新进入PE系统将cmd.exe
和osk.exe
复原回来。