Windows关机或重启显示有程序正在阻止、程序失去响应

windows系统关机时,先完成所有磁盘的写操作,类似文档、文件的写入,将缓存区的内容写入磁盘,再将缓存区内容清空。此后再执行关闭窗口程序,关闭所有当前运行的程序,当程序无法关闭失去响应时,将会阻止关机进程,此时我们需要对系统策略进行配置,如下文1、2两点。最后系统再将所有保护模式的驱动程序转换成实模式,主要是在底层进行操作,系统断电,完成关机。

issues:我们在编辑word文档未保存的情况下点击关闭,软件会提醒我们是否保存。我们利用外设进行输入时,系统将会把我们的操作记录在内存缓冲区域,当点击保存时被写入磁盘,若不点击,内存缓冲区域的内容将不会被写入磁盘,在关闭程序或者关机时,缓冲区的内容将会被清空。

Windows在关机时有一个专门的关机程序,关机程序主要执行如下功能:

1.完成所有磁盘写操作;

2.清除磁盘缓存;

3.执行关闭窗口程序,关闭所有当前运行的程序;

4.将所有保护模式的驱动程序转换成实模式;
以上4项任务是Windows系统关闭时必须执行的任务,这些任务不能随便省略,如果直接关机,将导致系统文件损坏,从而出现关机故障。

1、有程序阻止windows重新启动/关机

办法:修改本地组策略,避免在重启时出现“此程序正在阻止windows重新启动”界面。

使用键盘组合键win+R调出运行栏,输入gpedit.msc,在计算机配置中依次选择管理模板>系统>关机选项,在关机选项下双击“关闭会阻止或取消关机的应用程序的自动终止功能”,点击启用


图1 打开组策略


图2 启用该功能

通过修改本地组策略,系统将对阻止关机的应用程序执行自动终止功能。

2、启动/关机时,程序失去响应

办法:修改注册表,避免在重启时出现关闭程序失去响应的情况,此时必须手动点击立即停止才能完成重启动作。

进入注册表[HKEY_CURRENT_USER\Control Panel\Desktop]项,修改"AutoEndTasks"="1"(自动关闭失去相应的应用程序),修改"WaitToKillAppTimeout"="1000"快速关闭失去响应的应用程序,单位为毫秒);

进入注册表[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer]项,修改"AlwaysUnloadDLL"=dword:00000001(系统重启时自动释放关联资源)

进入注册表[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon]项,修改"AutoRestartShell"=dword:00000001(资源管理器崩溃时自动重启)

可以直接下载链接修改注册表,地址:http://pan.baidu.com/s/1hrAwxVI密码:amz1