(编辑:jimmy 日期: 2024/12/23 浏览:2)
Windows系统缓慢的关机速度一直为人诟病,这一问题在Windows Vista中也没有得到很好的解决。当然,这也与Windows 系统自身的机制有关:Windows在发出关机指令后,需要首先通知已加载有服务、应用程序和进程等,待其逐一关闭后才能进行系统关机或重启的任务,此外,关机前要进行的操作还包括如清理页面文件等,需要对页面文件中的每个页面执行物理写入操作,从理论上讲,这些过程是不可省略的,不然将影响系统的稳定性。
怎样使系统快速关机
因此,对用户而言,要加快Windows Vista的关机速度,在保证系统稳定性前提下可做的优化不是跳过类似的服务、应用程序或进程的关闭,而是通过尽量缩短关闭前的等待时间。那么,在Windows Vista中,应如何操作呢?
前面说的Windows系统一样,我们可以通过修改注册表调整相应选项来实现。
缩短关闭服务前的等待时间
上面我们提到过,在Windows Vista的关机流程中,系统首先向已加载的服务发出关闭警告,然后等待这些服务自动关闭后给出的关闭信号,如果在设定的等待时间期限后仍未收到关闭信号,Windows系统将相应的服务实施强行中止关闭。
要加快Windows Vista的关机速度,首先可以通过缩短系统默认的关闭服务等待时间来实现。打开注册表编辑器,找到如下注册表项:
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control
在右面板中,可以看到一个名为“WaitToKillServiceTimeout”的注册表项,双击以修改它,将它的数值从默认的20000(单位为毫秒)调整到一个较小的数值,如5000 甚至1000等,这样,如果Windows Vista在设置的5秒(5000)或1秒(1000)内没有收到服务关闭信号,系统即会弹出一个警告窗口,通知用户该服务无法中止,并给出强制中止服务或继续等待的选项等待用户选择。
缩短关闭应用程序与进程前的等待时间
与关闭服务前的等待时间类似,Windows Vista在强行关闭应用程序与进程前同样有一段等待该程序或进程自行关闭的时间,只有超过该时限后,Windows 系统才会将其强行中止。
因此,缩短默认关闭应用程序或进行等待时间,同样能够加快Windows Vista的关机速度。
设置方法同上面类似,在注册表中找到如下分支:
HKEY_CURRENT_USER\Control Panel\Desktop
双击右侧面板中的 “WaitToKillAppTimeout” ,将其值从默认的 20000(单位同样为毫秒)修改为较小的5000或1000,这样,Windows在发出关机指令后如果等待5秒或1秒仍未收到某个应用程序或进行的关闭信号,将弹出相应的警告信号,并询问用户是否强行中止。
在右侧面板中还有一个名为 “HungAppTimeout” 的注册表项,该项对应于系统在用户强行关闭某个进程或应用程序后,如果该对象没有响应时的等待时间。其默认值为“5000”,一般可将其修改为“1000”。
然后,在如下的注册表分支:
HKEY_USERS\.DEFAULT\Control Panel\Desktop\
重复上面的操作,即修改“WaitToKillAppTimeout”与 “HungAppTimeout” 两个注册表项的值。
在关机或注销时自动中止应用程序或进程
不过,即便我们将 “HungAppTimeout”的值设得很小,并不意味着Windows Vista在等待时间超过该时限后便会自动中止该程序或进程,而仍会弹出对话框让用户确认是否中止。如果您感觉这样的方式过于繁琐,可通过修改注册表项让Windows Vista在超过等待时限后自动强行中断该进程的运行。
找到如下的注册表分支:
HKEY_CURRENT_USER\Control Panel\Desktop registry
可看到项中有一名为“AutoEndTasks”的注册表项,其默认值为“0”,将其修改为“1”即是让Windows Vista自动终止所有的进程,而不再需用户的确认。
以保证系统的稳定性为前提
尽管上面的方法在某些情况下可以明显加快Windows Vista的关机速度。不过,需要强调的是,无论“WaitToKillServiceTimeout”、“WaitToKillAppTimeout”还是“HungAppTimeout”,对Windows 系统而言都是相当重要且不可缺少的参数,设置不当将影响系统的稳定性或遗失用户重要数据的后果。
以“WaitToKillServiceTimeout”为例,Windows 系统使用WaitToKillServiceTimeout的目的是为了给相应服务一段缓冲时间,让这些执行中的服务能够将缓存中的数据在系统关闭前写回去,如果没有保留足够的缓冲时间,数据便可能丢失而造成无法预知的后果,因此,一般不要将其时长设置得过短,至于将其设为“0”则更是不恰当的。