首先谈谈windows系统自动关机的条件。在win98及更高版本的系统中都支持自动关机,即不通过电源的物理开关实现关机。自动关机是通过操作系统支持的ACPI(Advanced Configuration and Powe Interface,高级系统配置和电源管理)技术来实现的。ACPI是由英特尔、微软、东芝等多家公司共同开发的,可以在bios之上通过操作系统进行电源管理。该技术要求主板控制芯片和其他I/O芯片与操作系统建立标准联系通道,使操作系统可以通过瞬间软电源开关进行电源管理。因此,只有在硬件、电源及操作系统都支持ACPI的前提下,自动关机才能实现。因此,为了保证自动关机的实现,在bios设置中,必须把ACPIfnuction设置为Enabled。同时必须启用APM(高级电源管理)功能。
自动关机是一个比较复杂的过程,它是由系统进程Csrss和Winlogon配合并调用关机函数ShutdownSystem来完成的,这函数进一步调用SetSystemPowerState关闭驱动程序和其它的当前执行程序子系统(如即插即用管理器、电源管理器、执行程序、IO控制器、配置管理器、内存管理器等)此外,执行自动关机时,系统还要检查当前系统中各种外部设备的状态以及尚未关闭的应用程序的状态,处理各个数据缓冲器中的数据等。如果在上述工作中发生错误就不能正常关机。因此一般说来在关机之前应该使各种外设停止工作,关闭所有的应用程序后再行关机。
在windows系统中的确常常出现自动关机失败的情况,下面谈谈具体的原因和处理办法。
1、系统文件中自动程序有所缺陷。为了确认是否是这个原因所致,可以作如下实验。在开始运行中输入:rundll32user.exe,exitwindows 看看能否正常关机。如果在这个命令下可以正常关机,表示自动程序可能有某种缺陷,如果使用的是win98系统,请运行一下sfc程序,检查一下系统文件的完整性和修补文件。如果采用其它系统,如winme,2000,xp,也可在相应的项目中完成文件修补。如果修补文件仍然不能解决问题,只能重新安装一下系统。而运行rundll32user.exe,exitwindows也不能正常关机,则可能是操作系统中某些程序有缺陷,处理办法仍是修补系统或重新安装系统。
2、病毒和某些有缺陷的程序或者系统任务有可能造成关机失败。首选查杀病毒,在关机之前关闭所有的应用程序。由于有程序是系统启动时加载的,因此可删除启动组中的所有程序,运行msconfig程序到启动组中,去掉所有程序,以便看看有无影响关机的程序。
3、外设和驱动程序兼容性不好,不能响应快速关机。可运行msconfig,在常规标签页中选择高级,在打开的窗口中选择禁用快速关机。如果怀疑外设有故障,也可以逐个卸载外设进行检查,以便找到有影响的外设。
4、如果设置了在关闭windows时使用声音文件,当该文件损坏,也能造成关机失败,请在控制面板中声音事件中选择”退出windows“,把声音设为无。
5、在win98自动关闭时将显示”现在可以安全地关闭计算机了“,这个内容是由windows目录下的"logos.sys"文件完成的,如果这个文件损坏,也能造成不能关机,解决办法,恢复该文件。
6、安装winxp后不能自动关机,如果排除了上述各种原因后,有可能是其控制面板中的电源选项设置不正确,请检查你的设置,保证ACPI和APM能够正常工作。也有的主板系统bios中的APM和winxp之间不兼容,因为不能自动关机。选择关机却变成重新启动系统,在这种情况下只能手动关机了。解决问题的办法是升级主板的系统bios,采用新的版本。