Windows命令行shutdown命令和快速启动之间的一点坑
Hybrid shutdown
自Win8.1开始,在休眠和完全关闭之外,多出一个“混合关闭(hybird shutdown)”的状态。在“控制面板\硬件和声音\电源选项\系统设置”中开启快速启动选项后,在开始菜单中选择关机,设备将进入混合关闭状态。混合关闭状态下,用户会话被关闭,而内核会话处于休眠。
Shutdown.exe -hybrid
在cmd命令行中,可以通过运行shutdown.exe来执行关机。shutdown.exe的hybrid参数表示此次关机执行完全关闭还是混合关闭。
- 不带hybrid参数时,无论何时,都将执行完全关闭
- 带hybrid参数时,取决于系统的快速启动设置
- 启用快速启动时,执行混合关闭
- 禁用快速启动时,执行完全关闭
下面列举了四种通过shutdown命令来执行关机的情形:
- 系统启用快速启动,在cmd中执行
shutdown /s /hybrid /t 0 - 系统启用快速启动,在cmd中执行
shutdown /s /t 0 - 系统禁用快速启动,在cmd中执行
shutdown /s /hybrid /t 0 - 系统禁用快速启动,在cmd中执行
shutdown /s /t 0
得到的结果是:Hybrid shutdown、Shutdown、Shutdown、Shutdown
那么有没有办法通过代码或cmd命令行禁用/启用快速启动功能呢?
代码中启用/禁用快速启动
方法一 通过注册表项设置快速启动
与“控制面板\硬件和声音\电源选项\系统设置”中快速启动复选框关联的注册表是
HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Power\{HiberbootEnabled}
设置为1时,启用快速启动
设置为0时,禁用快速启动


方法二 通过powercfg命令设置快速启动

command line
powercfg /H ON //启用休眠功能
powercfg /H OFF //禁用休眠功能
所以,当使用powercfg /H OFF禁用休眠功能后,不仅快速启动会被禁用,也无法再使系统进入休眠。可以看到,休眠功能禁用后,控制面板中休眠和快速启动对应的设置已经消失。因此,禁用休眠功能后,无论注册表项的值是多少,快速启动都不会生效,关机总是会执行完全关闭。



浙公网安备 33010602011771号