Windows关机策略

转载 2006年06月17日 23:34:00
本文转自DreamLand(https://dream4ever.org)
作者不明
如您对此文章张贴到此处有啥意见请联系我:
文章已经发表在《电脑报》27期上,贴到这里是为了能够更广泛的和大家交流。

  总有人在抱怨Windows的关机是如何的缓慢,实际上Windows本身的关机速度已经很快的了。
问题主要出在用户安装的程序上面,由于一些设计不好的应用程序或驱动程序的问题,造成了关
机上的延迟。针对这个问题,网络上出现了类似于下面的技巧:

  打开任务管理器,按住“Ctrl”键的同时,再单击任务管理器窗口中的菜单“关机→关闭”命令时,
系统会快速地被关闭,同样,在按住“Ctrl”键时,选择其他命令(例如重新启动)时,也会达到快速
执行该命令的目的。

  同时,也出现了像SuperFast Shutdown一样的快速关机软件。
在讨论上述技巧原理之前,先说说Windows是如何关机的:Windows关机步骤涉及到Windows
多个组件和多个过程,简单的说,Windows 的关机步骤不是大多数人认为的那么简单。基本的过程是这样的:
  1. 用户发起关机指令以后,发起关机指令的程序会通知Windows子系统CSRSS.EXE,
CSRSS.EXE收到通知以后会和 Winlogon.EXE做一个数据交换,接着由Winlogon.EXE通知
CSRSS.EXE开始关闭系统的流程 。
  2. CSRSS.EXE收到Winlogon.EXE的通知以后,会依次查询拥有顶层窗口的用户进程,
让这些用户进程退出。如果某一个用户进程在一个默认的超时时间5000毫秒(可以通过修改注册表键值HKEY_CURRENT_USER/Cont rol Panel/Desktop/ HungAppTimeout设定超时时间)内没有退出的话,
Windows会显示一个结束任务对话框用于询问用户是否结束这个任务。默认情况下将显示这个对话框并
一直保持而不会自动关闭。对于控制台程序来说,基本情况类似,只不过Windows使用HK EY_CURRENT_USER/Control Panel/Desktop/ WaitToKillAppTimeout值来设置超时时间。
  3. 接着是轮到终止系统进程了。系统进程包括SMSS.EXE、Winlogon.EXE、Lsass.EXE等。
Windows在终止系统进程的时候并不像终止用户进程那样如果无法在规定时间内终止则提示用户,
而是跳过这个进程,去执行下一个系统进程的终止操作。使用的超时时间和第2步使用的时间相同。

  上述3个步骤是整个Windows关机过程中最耗费时间的一段,大多数关机缓慢的原因都是因为
这3个步骤引起的。完成前3个步骤以后,进入了关机操作的第4个阶段,也是最后一个阶段。

  4. Winlogon.EXE调用一个原生API函数NtShutdownSystem()来命令系统执行后面的扫尾工作。
在这个阶段里面, Windows执行子系统会完成最后的关机操作,例如:设备驱动在这个阶段里面完
成一些驱动设定的特殊操作;也是在这个阶段,配置管理系统将被修改过的注册表数据会写道磁盘里
面。等除了电源管理以后的全部子系统完成退出以后,电源管理完成最后的操作:如重启、关机等。

  了解了Windows的关机流程以后,下面分析一下前面说的快速关机操作是怎么完成的。先分析
一下SuperFast Shutdown的原理,SuperFast Shutdown是使用Visual Basic编写的,体积很小,
就15KB,经过分析以后得出一个令人惊讶的结论:SuperFast Shutdown首先使用RtlAdjustPrivilege()
提升自己的权限,然后直接调用NtShutdownSystem() 函数来完成关机过程。由于跳过了最为耗费时间
的前3个步骤而直接进入第4个步骤,所以造成了能够很快关机的假象。

  再看看任务管理器的快速关机是如何实现的:分析结果也是类似于SuperFast Shutdown的原理,
也是通过省略一些步骤来加快关机的速度。

  那么,为什么在快速关机以后会出现设置丢失的情况呢?原因在于前3个步骤里面有一个让进程
正常退出的可能。大多数软件在编写的时候会把一些设置保存在自己私有的内存空间里面,当软件
关闭的时候才把这些设置回写到特定的地方,如注册表或某个配置文件里面。而关机操作的第4步并
没有提供一种途径能够让这些设置记录下来,因为这个阶段Windows已经认为前面所有必须经过的
流程已经完成,剩下的就是 Windows核心组件的退出的问题了。在这种情况下,使用快速关机导致
设置丢失也不足为怪了。

  因此,为了你系统的健康,关机还是按照正常顺序来,数据的安全性往往比节省的那几十秒钟重要的多。

阻止windows关机时自动结束进程,导致数据丢失或异常

阻止windows关机或注销操作

在windows中利用cmd进行定时关机(重启,注销)

window系统使用cmd命令关机 先来学习一个命令 shutdown //这个命令本省的意思就是关机的意思,下面看一下它的参数 -s //...

Windows XP下如何设置电脑定时关机

我们在使用电脑经时,有时候会遇到一些紧急情况,需要暂时离开电脑,可是我们的电脑正在执行任务。比如下载资料、一些视频文件格式转换等等!我们知道电脑关闭还需要多长时间,也就是这些任务执行完毕还需要多长的时...
  • kevinhg
  • kevinhg
  • 2013年03月06日 10:22
  • 1931

windows server 2008 r2, 每隔一段时间自动关机

前段时间在做Exchange 2010测试的时候,由于windows server 2008  r2试用过期,开机后二个小时就会自动关机,可是我又不想重装系统,加为那样我可能需要重装好多东西,包括DN...
  • yw1688
  • yw1688
  • 2013年05月02日 16:09
  • 949

基于visual c++之windows核心编程代码分析(25)检测U盘控制开关机

U盘,全称“USB闪存盘”,英文名“USB flash disk”。它是一个USB接口的无需物理驱动器的微型高容量移动存储产品,可以通过USB接口与电脑连接,实现即插即用。U盘的称呼最早来源于朗科公司...

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

1、有程序阻止windows重新启动/关机 办法:修改本地组策略,避免在重启时出现“此程序正在阻止windows重新启动”界面。 使用键盘组合键win+R调出运行栏,输入gpedit.msc,在计算机...
  • four_p
  • four_p
  • 2017年07月27日 11:33
  • 718

自动开机和自动关机设定方法(包括linux和windows)

注:与系统无关,开机 Del 进入BOIS。   (一) linux 机器   1.关机 :   编辑 /etc/crontab添加一条并且保证crontab服务的运行即可    f1...

windows提示电脑已经关机了但主机还在运行

ion:click" tangram_guid="TANGRAM__110" >检举|2011-11-06 23:05 qiang7100110 | 分类:Windows | 浏览567次我有更好...

DELPHI实现关机,兼容全部WINDOWS系统

关闭Windows函数ExitWindowsEx(UINT uFlag,DWORD:dwReserved)说明:   控制WINDOWS的开关:如关闭WINDOWS,重新启动WINDOWS等,...
  • wwb0111
  • wwb0111
  • 2012年05月26日 15:57
  • 221

Windows 7定时关机命令shutdown

在 Win7 中,shutdown实现自动关机的方法如下: 【方法一:计划任务法】 开始>>> 在搜索框输入cmd >>> 回车 >>> 调出DOS窗口或直接Windows键+R,直接调出运行...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Windows关机策略
举报原因:
原因补充:

(最多只允许输入30个字)