董师傅茶坊(27)
技巧与实践
安徽赵凯读者来信:“我最近下载了一款快速关机的软件,这款软件非常厉害,几乎眨眼工夫就将电脑关闭了。很多人说这个软件可能会破坏数据,但他们又没有说出相应的依据。我现在很矛盾,有了一个好东西,却又不敢用。董师傅,希望你能给一个权威的说法,以消除我的疑惑。”本期董师傅就会在“话题”馆中讨论这个问题。
话题馆
董师傅揭秘:
快速关机会导致数据损坏?
不光是赵凯读者提到的软件能实现快速关机,而且采用一些技巧也可以达到同样的目的,但这样操作究竟会带来什么后果呢?这次被师傅邀请到“话题馆”参与讨论的是对Windows系统颇有研究、荣获2004年微软最有价值专家的张康宗先生。
从平常的经验可以看出,执行了关机操作后电脑不会立即断电,Windows还会有一系列的动作如关闭打开的程序等,那么从执行关机命令到最终断电是一个什么样的过程呢?
Windows的正常关机涉及到多个组件和多个过程。我们来看一下它的基本过程。
①用户发起关机指令后,发起关机指令的程序会通知Windows子系统CSRSS.EXE,CSRSS.EXE收到通知后会和Winlogon.EXE做一个数据交换,接着由Winlogon.EXE通知CSRSS.EXE开始关闭系统的流程。
②CSRSS.EXE收到Winlogon.EXE的通知后,会依次查询拥有顶层窗口的用户进程,让这些用户进程退出。如果某一个用户进程在一个默认的超时时间5000毫秒(可以通过修改注册表键值HKEY_CURRENT_USER\Control Panel\Desktop\ HungAppTimeout设定超时时间)内没有退出的话,Windows会显示一个结束任务对话框用于询问用户是否结束这个任务。默认情况下这个对话框会一直显示而不会自动关闭。
对于控制台程序来说,基本情况类似,只不过Windows使用HKEY_CURRENT_USER\Control Panel\Desktop\ WaitToKillAppTimeout来设置超时时间。
③接着是轮到终止系统进程了。系统进程包括SMSS.EXE、Winlogon.EXE、Lsass.EXE等。Windows在终止系统进程的时候并不像终止用户进程那样如果无法在规定时间内终止则提示用户,而是跳过这个进程,去执行下一个系统进程的终止操作。使用的超时时间和第2步使用的时间相同。
上述3个步骤是整个Windows关机过程中最耗费时间的一段,大多数关机缓慢的原因都是因为这3个步骤引起的。完成前3个步骤后,进入关机操作的第4个阶段,这也是最后一个阶段。
④Winlogon.EXE调用一个原生API函数NtShutdownSystem()来命令系统执行后面的扫尾工作。在这个阶段里,Windows执行子系统会完成最后的关机操作,例如:设备驱动在这个阶段里完成一些驱动设定的特殊操作;也是在这个阶段,配置管理系统将被修改过的注册表数据回写到磁盘里面。等除了电源管理以外的全部子系统完成退出以后,电源管理完成最后的操作:如重启、关机等。
看来Windows关机过程还挺复杂的。我也试用了刘凯读者所说的软件SuperFast Shutdown(http://www.xp-smoker.com/installations/superfast.zip),确实会让关机速度加快。另外我们知道按Ctrl键的同时,再单击任务管理器窗口中的菜单“关机→关闭”命令时,系统也会被快速关闭。它们又是如何实现快速关机的目的呢?
我分析了一下SuperFast Shutdown,它是用Visual Basic编写的。经过分析后得出一个令人惊讶的结论:SuperFast Shutdown首先使用RtlAdjustPrivilege()提升自己的权限,然后直接调用NtShutdownSystem() 函数来完成关机过程。也就是说它跳过了最为耗费时间的前3个步骤而直接进入第4个步骤,因此能够很快关机。
利用Ctrl键配合任务管理器的快速关机技巧类似于SuperFast Shutdown的原理,即通过省略一些步骤来加快关机的速度。
原来它们之所以能快速关机是因为投机取巧,跳过了一些步骤。我记得当初使用Ctrl键配合任务管理器的关机技巧时,关机速度是快了,不过却出现过Office各组件中的个性设置丢失等莫名其妙的问题,这些问题和快速关机有关吗?
毫无疑问,利用前面的方法快速关机很容易导致你所说的那些问题。这是因为在前3个步骤中,有一个让进程正常退出的过程。大多数软件在编写的时候会把一些设置保存在自己私有的内存空间里面,当软件关闭的时候才把这些设置回写到特定的地方,如注册表或某个配置文件里。
而关机操作的第4步并没有提供一种途径能够让这些设置被记录下来,因为这个阶段Windows认为前面所有必须经过的流程已经完成,剩下的就是Windows核心组件的退出问题了。在这种情况下,使用快速关机导致软件设置丢失等现象也就不足为怪了。
实际上Windows本身的关机速度已经很快了,关机速度变慢的多数问题都出在用户安装的程序上,由于一些设计不好的应用程序或驱动程序的问题,造成了关机上的延迟。
因此要加快关机速度,正确的做法是尽量减少应用程序等对关机过程的影响,如关闭一些无用的自启动程序等,而借助SuperFast Shutdown或一些技巧执行非常规的关机操作尽量不要使用,毕竟数据的安全性比节省的那几十秒钟重要得多。
会客厅
删除双系统菜单很简单
Q:我在电脑的C盘和D盘安装了WinXP操作系统,后来格式化了D盘,但开机时还是让我选择进入哪一个操作系统,听说需要修改boot.ini文件,董师傅,你可以告诉我怎么操作吗?
A:董师傅这里还有一个更简单的方法:在运行中输入“msconfig”并回车,打开系统配置实用程序,选择“boot.ini”选项卡,然后点击“检查所有启动路径”按钮,检查完毕,点击“确定”系统就会把那条无用的引导信息删除。
TE删除之后带来问题
Q:我把腾讯的浏览器TE删除了,当好友发送的信息中有超链接时,点击超链接没有反应,这个问题如何解决?
A:多数删除腾讯浏览器TE的方法都是拿QQ安装目录里的“TBROWSER.EXE”这个可执行文件开刀,我们只要将计就计,把IE的可执行文件拷贝到此处即可。打开IE主程序所在目录,一般默认为“X:\Program Files\Internet Explorer”(其中X代表你的系统所在盘),找到“Iexplore.exe”文件,将它复制到QQ的安装目录里,并重新命名为“TBROWSER.EXE”。当点击信息窗口中的链接时,系统会弹出“Internet Explorer兼容性模式”提示窗口,点击“确定”即可。
系统升级惹麻烦
Q:最近刚刚把单位的部分电脑升级到了WinXP SP2,却发现访问这些机器时被拒绝,而访问没有升级的电脑却很正常,请问这是为什么,如何解决呢?
A:别急,董师傅来告诉你,升级到WinXP SP2的电脑,系统默认情况下会打开防火墙,所以就会拒绝所有来访,其实只要点击升级过的电脑的“控制面板→Windows防火墙”,选择“例外”选项卡,在程序和服务列表中勾选“文件和打印机共享”即可解决问题。
让加密文件一目了然
Q:我在WinXP系统中对大量的文件进行加密(EFS加密),使用时发现加密和未加密文件很难区分,查找起来很不方便,请问有什么好方法可以解决呢?
A:用“资源管理器”打开有加密文件的文件夹,点击工具栏上“查看”菜单中“选择详细信息”命令;然后在“详细信息”窗口中,选中“属性”复选框,点击“确定”退出;最后再次点击工具栏上的“查看”按钮,选择“详细信息”项,在“资源管理器”的“属性”列表中,加密的文件就会以“AE”在属性栏里标志出来。