Hybrid shutdown

自Win8.1开始,在休眠和完全关闭之外,多出一个“混合关闭(hybird shutdown)”的状态。在“控制面板\硬件和声音\电源选项\系统设置”中开启快速启动选项后,在开始菜单中选择关机,设备将进入混合关闭状态。混合关闭状态下,用户会话被关闭,而内核会话处于休眠。

Shutdown.exe -hybrid

在cmd命令行中,可以通过运行shutdown.exe来执行关机。shutdown.exe的hybrid参数表示此次关机执行完全关闭还是混合关闭。

  • 不带hybrid参数时,无论何时,都将执行完全关闭
  • 带hybrid参数时,取决于系统的快速启动设置
    • 启用快速启动时,执行混合关闭
    • 禁用快速启动时,执行完全关闭

下面列举了四种通过shutdown命令来执行关机的情形:

  1. 系统启用快速启动,在cmd中执行shutdown /s /hybrid /t 0
  2. 系统启用快速启动,在cmd中执行shutdown /s /t 0
  3. 系统禁用快速启动,在cmd中执行shutdown /s /hybrid /t 0
  4. 系统禁用快速启动,在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 控制的是休眠功能,而不是快速启动功能。什么意思呢?前面提到过,混合关闭时,用户会话关闭,而内核会话休眠。怎么休眠呢?其实和系统休眠类似,因此也可以说,快速启动功能依赖于休眠功能。

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

Windows命令行shutdown命令和快速启动之间的一点坑的更多相关文章

  1. Windows命令行(DOS命令)教程

    一.命令行简介 命令行就是在Windows操作系统中打开DOS窗口,以字符串的形式执行Windows管理程序. 在这里,先解释什么是DOS? DOS——Disk Operation System 磁盘 ...

  2. Windows命令行(DOS命令)教程 -1 (转载) http://www.pconline.com.cn/pcedu/rookie/basic/10111/15325.html

    一.命令行简介 命令行就是在Windows操作系统中打开DOS窗口,以字符串的形式执行Windows管理程序. 在这里,先解释什么是DOS? DOS--Disk Operation System 磁盘 ...

  3. Linux和windows下的shutdown命令

    Linux下的shutdown命令 shutdown [options] [time] [wall] options: --help 获取帮助 -h 关机 -r 重启 -c 取消 -k 仅显示警告信息 ...

  4. Oozie命令行常用命令汇总[转]

    Oozie命令行常用命令汇总 有时候脚本跑多了就不愿意在OozieWeb端去看脚本的运行情况了.还好Oozie提供了很多命令行命令.能通过命令行直接检索自己想看到的脚本信息.在这里简单进行一下总结.一 ...

  5. Linux命令行与命令

    Linux命令行与命令   作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! Linux的命令是很重要的工具,也往往是初学者最大的瓶 ...

  6. 命令行工具命令 - run包到手机里

    命令行工具命令 你完全可以选择不输入以下这些命令,执行这些命令的结果与在 Android Studio 中单击"运行"按钮是一样的. chmod +x gradlew - 此命令只 ...

  7. 【Linux】1、命令行及命令参数

    命令行及命令参数 文章目录 命令行及命令参数 1.命令行提示符 2.命令和命令参数 简单的命令 date ls 命令参数 短参数(一个字母) 长参数(多个字母) 参数的值 其它参数 3.小结 4.参考 ...

  8. Windows命令行(DOS命令)教程–2 (转载) http://arch.pconline.com.cn//pcedu/rookie/basic/10111/15325_1.html

    二.符号约定 为了便于说明格式,这里我们使用了一些符号约定,它们是通用的: C: 盘符 Path 路径 Filename 文件名 .ext 扩展名 Filespec 文件标识符 [ ] 方括号中的项目 ...

  9. linux命令行—《命令行快速入门》

    pwd print working directory 打印工作目录 hostname my computer's network name 电脑在网络中的名称 mkdir make director ...

  10. 春节前“摸鱼”指南——SCA命令行工具助你快速构建FaaS服务

    春节将至,身在公司的你是不是已经完全丧失了工作的斗志? 但俗话说得好:"只要心中有沙,办公室也能是马尔代夫." 职场人如何才能做到最大效能地带薪"摸鱼",成为了 ...

随机推荐

  1. elk收集分析nginx日志,并绘制图形

    一.修改nginx配置 把nginx日志修改成json格式,在nginx.conf中添加如下内容,重启nginx. log_format log_json '{"@timestamp&quo ...

  2. 使用 gitee 托管你的 go 模块

    前言 实话实说, github 作为这个球上顶级的代码托管平台, 公司/企业/开发者的认可和参与度是非常高的. 但是因为某些原因 特色墙, 国内使用 github 的体验不是非常好 速度慢 不靠谱同学 ...

  3. IDEA target中没有class文件/target中有class没有yml文件/yml文件不显示叶子

    target中没有class文件.表现为文件显示红波浪线,但是点进去自己又好了,但是编译会说找不到.点进入target文件夹发现没有class文件,只有yml文件或者什么都没有 解决方法:rebuil ...

  4. Git错误,Updates were rejected because the tip of your current branch is behind

    问题:Updates were rejected because the tip of your current branch is behind 在push代码时,遇到这种问题Updates wer ...

  5. sql学习day2——运用case进行有条件的update(续day1)

    1.薪水表,如下所示,要求:为下一年调整工资22000以下的员工涨工资10%,24000以上的员工减少10% 思考:如果先update薪水24000以上的员工,假设某工资为24000,24000*(1 ...

  6. EFCore(五)——多个DBContext的Code First指定对应的DBContext更新

    此环境为ASP.NET Core的项目 1.在需要更新的DBContext里添加空的构造函数 2.打开Nuget命令行选择对应的目录位置 3.带参数-Context指定对应的DBContext 1.  ...

  7. kali安装charles

    00X01 kali安装charles wget -q -O - http://www.charlesproxy.com/packages/apt/PublicKey | sudo apt-key a ...

  8. 信息资源管理综合题之“LJ集团信息化项目规划问题”

    一.LJ集团是北京的一家规模巨大的房地产投资公司,早在15年前,该公司出现了如下几个问题:每个业务员手上的用户资料,其他人无法得知,从而导致员工离职时会流失大量潜在客户:业务员繁忙的时候,无法满足客户 ...

  9. .NET 8 开发的跨平台多商户第三方支付SDK

    前言 快速发展的互联网应用开发中,支付功能已成为各类平台不可或缺的一环.为了帮助大家更高效地接入主流支付渠道,推荐一套基于 .NET 开发的第三方支付 SDK.该 SDK 支持跨平台运行,适用于多种操 ...

  10. WPF 的 FlowDocumentScrollViewer滚动到最底下的方法

    官网上好像并没有直接给相应的接口和方法. 发现一种有效的方法: 先说方法: ScrollViewer sv = flowScrollViewer.Template.FindName("PAR ...