“误操作导致无法打开组策略”之本机解决法
本文是以下的文章的姐妹篇(感谢Heelen的Comment):
http://blogs.itecn.net/blogs/ahpeng/archive/2005/11/01/NoGpedit1.aspx
这里就简单讨论一下如何在本地计算机上进行恢复。
该问题的难点在于我们可能将面对一个非常苛刻的环境,考虑这样一个近乎极端的可能性:用户在组策略里设置仅允许运行某个无关紧要的应用程序,这将会导致无法运行regedit、组策略管理单元、记事本、系统还原等几乎所有的组件,这种可能性不是没有。这样的话,留给我们的排错空间就非常小。那么如果碰到这种情况,又该如何对付?
这里介绍以下两种方法:
一、新建用户法
这种方法适用于Windows XP SP2,在SP2下只能在用户配置下启用“只运行许可的Windows程序”策略项,而删除了在计算机配置下的相应策略项。这为我们排错提供了很大便利。
(1)我们可以在控制面板里打开“用户帐户”组件,新建一个管理员帐户,假设是Test。
(2)打开我的电脑,定位到以下目录:
C:\WINDOWS\system32\GroupPolicy\User
重命名其下的Registry.pol文件。
(3)注销当前用户,登录到新建的Test帐户,现在可以打开组策略管理单元了,修改回原来的配置即可。
疑难解答
1.为什么该方法能够奏效?
原来组策略的”用户配置“部分的策略项,保存在C:\WINDOWS\system32\GroupPolicy\User\Registry.pol文件里,同时“用户配置”的策略只能在用户登录后才能加载到注册表(HKEY_CURRENT_USER\SOFTWARE),重命名Registry.pol文件后,“用户配置”部分对新建用户就无效,可以在该新建用户下将组策略修改回原来值。
2.为什么可以启动“用户帐户”组件?
该策略项并非可以阻止一切程序或者组件运行,而是只能阻挡从资源管理器中启动的进程,而不能阻止由系统启动的进程(例如任务管理器),也不能阻止从CMD命令行窗口启动的进程(如果允许运行cmd的话)。
二、离线修改注册表
如果是Windows 2000计算机,则可以在“计算机配置”下启用“只运行许可的Windows程序”策略项,那么以上方法就不可以使用了。因为“计算机配置”下的策略会加载到HKEY_LOCAL_MACHINE\Software中,在其他用户登录前就已经生效。这时候我们可以借助第三方工具Offline NT Password & Registry Editor,进行注册表的离线修改。
可以到以下站点下载免费的Offline NT Password & Registry Editor:
http://download.myrice.com/arts/dn01/dn0107/31508.html
(1)恐怕只能在其他计算机上下载该工具,并制作一张启动软盘。
(2)用该软盘启动该故障计算机,在命令行下离线加载Software注册表配置单元,并删除以下的注册表项:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\policies\Explorer\RestrictRun
(3)重启系统,就可以解锁。
疑难解答
1.如何知道该策略项所对应的注册表项和键值?
“计算机配置”部分的策略保存在C:\WINDOWS\system32\GroupPolicy\Computer\Registry.pol文件里,用记事本打开该文件,即可看到每个策略项所对应的注册表项和键值。
注意
根据MVP刘晖的提醒,其实只要在安全模式下登录到Administrator帐户环境下,即可绕过软件限制策略。本文只是为了提供一种解决问题的思路。