我知道Windows上的几乎所有内容(例如打开任何类型的应用程序)都可以从命令提示符或“运行”菜单中完成。

如何使计算机进入睡眠或关闭状态?这是什么命令?

评论

在命令提示符下键入shutdown,然后根据我的判断看一下在XP及更高版本上可以使用的输出。

相关:superuser.com/questions/39584/…

#1 楼

您会发现shutdown.exe是您的朋友。

其他方便的命令请参见此文章:

睡眠计算机(有关详细信息,请访问https://superuser.com/a/463652/ 249349)

锁定工作站

休眠计算机

see answers by Scott Chamberlain and Eric L


重新启动计算机

Shutdown.exe -r -t 00


关闭计算机

Shutdown.exe -s -t 00


编辑/更新:

如果休眠状态为休眠状态,看来休眠计算机是有问题的

从其他答案中复制:

您可以尝试PsShutdown
或:


命令rundll32 .exe powrprof.dll,SetSuspendState为0,1,0的睡眠状态
是正确的-但是,如果不关闭休眠状态,它将进入休眠状态,而不是休眠。

操作方法如下:

转到“开始”菜单,然后键入
cmd.exe,右键单击并选择以管理员身份运行,以打开提升的命令提示符。键入以下命令:


powercfg -hibernate off


评论


rundll32.exe powrprof.dll,SetSuspendState 0,1,0的问题是它无法正常工作。 SetSuspendState将使计算机进入某种混合睡眠/休眠模式。从开始菜单使用“睡眠”按钮时,可以通过按键盘上的任意键使计算机从睡眠状态恢复。使用此命令行,由于深度睡眠状态,make的恢复速度要慢得多,并且只有在按计算机上的电源按钮后,make才能恢复。按键无法恢复。那么...您如何使其像普通待机模式一样处于睡眠状态-只需按下一个键即可恢复?

–企业极客
2010-2-14在12:29



赞成票并非没有必要。您的答案不能单独解决问题。读者应该能够从答案中收集到足够有用的信息来解决问题,而不必跟踪到可能损坏或死机的其他站点的任何链接。

– Iszi
2011年5月19日下午4:36

对未回答所提出的问题的意见不足:即使在链接页面中,启用休眠模式时,描述的使机器进入睡眠状态的方法也无法使用。

–akurtser
11年8月24日在13:28

我还测试了Sleep命令,并且还可以确认它不能按预期运行。它与仇恨/拖钓无关,但是如果该命令不起作用,则该问题没有答案,因为这是问题的主要部分。

–reSPAWNed
2012年2月3日,11:28



rundll32不应用于调用SetSuspendState,因为其签名与rundll32期望的签名不匹配。请参阅:support.microsoft.com/en-us/kb/164787和msdn.microsoft.com/en-us/library/windows/desktop/…第一个参数将变为垃圾值,而不是FALSE值。这就是为什么它休眠而不是睡觉的原因。

– SergeyT
16-7-26 at 1:07



#2 楼

如果计算机启用了休眠模式,其他人发布的方法将无法正常工作,计算机将无法在键盘上唤醒,更重要的是,在计划任务上也不会唤醒。

Microsoft Sysinternals工具之一是PsShutdown使用命令psshutdown -d -t 0,它将正确睡眠,而不是休眠,计算机

评论


需要提升管理员权限

–dsmtoday
17年2月20日在16:00

在Windows 10 x64,Build 1709中适用于我。

–汉斯·洛肯(HansLøken)
17年11月29日在17:58

在Win10x64版本1709中为我工作,使用管理员用户帐户运行cmd,但不以管理员右键运行选项

–维克多·卡尔森(Viktor Carlson)
17/12/29在8:16



我可以在Windows 10上使用(甚至不能以管理员身份)。

– DAB
18年5月23日在8:05

可在Windows 10 x64 Build 15063中运行。需要下载PsTools并将psshutdown.exe从存档复制到例如C:\ Windows \ System32,以便能够使用不带路径前缀的命令。然后,需要以管理员权限执行psshutdown -d -t 0才能挂起。即使不是使用Windows预安装的工具,也应该是可接受的答案,因为它可以回答问题。

– Arch Linux Tux
18/09/12在21:24



#3 楼

用于睡眠的命令rundll32.exe powrprof.dll,SetSuspendState 0,1,0是正确的-但是,如果您不关闭休眠状态,它将进入休眠而不是休眠状态。

这里的操作方法是:

转到在开始菜单中,键入cmd.exe,右键单击并选择以管理员身份运行,以打开提升的命令提示符。键入以下命令:

powercfg -hibernate off


评论


我认为这是真正解决问题的第一个答案。我放置了这两行(首先关闭-hibernate),并制作了一个批处理文件,使PC进入睡眠状态。这样做的一个问题是,它实际上关闭了休眠状态,这不是我想要的,因此,要解决此问题,我添加了一个在“在工作站解锁时”触发的计划任务,以便通过唯一一行为“ powercfg -hibernate off”。然后,我为第一个批处理文件配置了一个快捷键。做完了作品魅力十足,谢谢!

–akurtser
11年8月24日在11:44

太奇怪了您需要先关闭休眠模式才能正常睡眠吗?休眠模式打开时,混合睡眠/挂起状态powrprof.dll是否有名称?只是想知道。它与ACPI的任何州有关吗?

– Ehtesh Choudhury
2012年9月12日16:19

rundll32不应用于调用SetSuspendState,因为其签名与rundll32期望的签名不匹配。请参阅:support.microsoft.com/en-us/kb/164787和msdn.microsoft.com/en-us/library/windows/desktop/…第一个参数将变成垃圾,而不是FALSE。这就是为什么它休眠而不是睡觉的原因。

– SergeyT
16年7月26日在1:10

在Windows 10下不起作用

– T3rm1
17 Mar 23 '17 at 10:22

@EhteshChoudhury,这种情况下的问题是Rundll32参数不正确且完全不合适,因此它们实际上使用以下参数调用SetSuspendState:休眠:TRUE,ForceCritical:TRUE,DisableWakeEvents:TRUE。最后一点说明为什么除了电源按钮之外您什么也不能唤醒电脑。碰巧的是,禁用时尝试进入休眠状态会使您的PC在Win7中进入睡眠状态,这也许是为什么它对某些人不起作用的原因。

– SilverbackNet
18年1月4日在4:03

#4 楼

NirCmd可在Windows 8上运行(我假设它也可在Windows 7上运行)→http://www.nirsoft.net/utils/nircmd.html
命令是standby,但它使计算机进入睡眠状态。

nircmd.exe standby


如果启用了混合睡眠,则可以使用;即,它使计算机进入睡眠状态,并在断电的情况下将内存复制到磁盘。

评论


此方法无需提升为管理员。可以在启用或禁用休眠状态下使用。可以与混合睡眠一起使用。 Win10的不错的解决方案。

–dsmtoday
17年2月20日在16:38

#5 楼

请参阅Wizmo的免费实用程序,它可以执行很多操作。
您要查找的命令可能是:


wizmo Standby


评论


Wizmo与rundll32.exe powrprof.dll,SetSuspendState 0,1,0具有相同的问题-它使计算机处于休眠状态而不是睡眠

–安道尔
2012年8月19日在18:53

不,自从Vista以来,它实际上使计算机进入了Hybrid Sleep。如果您不想这样做,请关闭“混合睡眠”。

–harrymc
2012年8月19日在20:26



wizmo中断适用于Windows 8.1、10。很棒!!!!!!!!!!!!!

– YumYumYum
16年7月14日在15:46

Wizmo的工作很棒。不幸的是,我的企业病毒扫描程序将其删除,因为它包含使mcafee认为它包含木马的某些序列。

–巴斯蒂安
17-10-26在9:47



@bastian:Mcafee一直是应用程序编写者的坏消息(从个人经验来看)。

–harrymc
17-10-26在10:04

#6 楼

您可以按照下面指定的并在本文中引用的命令行来启动暂停或休眠选项。

%windir%\System32\rundll32.exe powrprof.dll,SetSuspendState


如果您的计算机设置为允许休眠,则可以使用上述命令将启动休眠模式。如果禁用了休眠功能,则它将进入待机状态。正如其他用户先前回答的那样,shutdown.exe /?将提供许多关闭选项。

评论


rundll32不应用于调用SetSuspendState,因为其签名与rundll32期望的签名不匹配。请参阅:support.microsoft.com/en-us/kb/164787和msdn.microsoft.com/en-us/library/windows/desktop/…第一个参数获取垃圾信息,而不是FALSE,因此它始终休眠而不是进入休眠状态。睡觉。

– SergeyT
16年7月26日在1:38

#7 楼

我已经为rundll32.exe powrprof.dll,SetSuspendState 0,1,0创建了一个快捷方式(也尝试了0,0,0),但是运行该快捷方式似乎会使我的PC进入休眠状态。我无法使用键盘唤醒PC。我必须按下电源按钮,并且PC会显示主板上的留言等。

阅读Windows API文档后,我创建了一个非常简单的程序,只需键入三行即可。我已将我编译的可执行文件上传到此页面(单击“ SleepTest.exe”),但是过一会儿即可删除该文件(这是我通过快速的Google搜索发现的免费文件托管站点)。

如果您不信任我(完全可以)或文件已被删除,则可以自己编译代码。您需要将“ PowrProf.lib”添加到链接器的其他依赖项。

#include "stdafx.h"
#include "windows.h" <-- Added this to make it work on Windows.
#include "PowrProf.h" <-- Added this to use the sleep function.

int main()
{
    SetSuspendState(FALSE, FALSE, FALSE); <-- Added this actual call.
    return 0;
}


rundll32.exe powrprof.dll,SetSuspendState 0,1,0似乎在做同样的事情,但是不知何故,上面的程序没有使计算机进入休眠状态。我可以通过按键盘上的任意键来立即唤醒PC(没有主板发布消息等)。

#8 楼

您必须首先在Windows中禁用“休眠”,然后将计算机置于“睡眠”状态。使用以下两个命令:

powercfg -hibernate off
rundll32.exe powrprof.dll,SetSuspendState 0,1,0


并执行反向操作,使计算机处于休眠状态,请使用以下命令:

powercfg -hibernate on
rundll32.exe powrprof.dll,SetSuspendState Hibernate


评论


rundll32不适用于调用SetSuspendState,因此不应用于此目的。第一个参数获取垃圾,而不是正确的值。因此,它总是休眠而不是睡觉(如果您根本没有禁用休眠)。

– SergeyT
16年7月26日在22:12



@SergeyT似乎对我有用(禁用休眠状态后);您是说这会损坏窗户吗?

–moondra
17年7月4日在16:17

它破坏了堆栈(因为rundll32需要一个不同的调用签名,所以它将未真正放置在堆栈中的内容弹出堆栈)。这会导致意外的行为。

– imoatama
18 Mar 23 '18 at 0:51

@imoatama好发现...

– masterxilo
18年8月16日在13:27

#9 楼

如果您有Python(带有pywin32),还可以直接使用以下命令调用SetSuspendState函数:

import ctypes
ctypes.windll.PowrProf.SetSuspendState(0, 1, 0)


可以轻松地将其放入批处理文件或类似快捷方式的目录中:

pythonw -c "import ctypes; ctypes.windll.PowrProf.SetSuspendState(0, 1, 0)"


因此,如果您没有与解释器关联的.py文件,则只需双击链接即可。

#10 楼

问题的关闭部分对于每个人都是显而易见的。 shutdown.exe /?显示了所有关闭/重新启动/高级选项引导/固件引导的选择。

但是我看到睡眠部分有很多重击,每个人都知道rundll32.exe不应该用于调用随机函数而它恰好在这里完全出于巧合而休眠。但这就是Windows的本质-人们经常在黑盒子里闲逛,他们发现了数百种变通办法来完成工作(大声疾呼到剂量提示)。

有很多“适当的”解决方案提出来外部工具,但即使多年来这个问题一直很活跃,我似乎也找不到本地的(混合/拼音/其他)批处理脚本。
这是我简单的power_sleep.bat:

@echo off &mode 32,2 &color cf &title Power Sleep
set "s1=$m='[DllImport ("Powrprof.dll", SetLastError = true)]"
set "s2=static extern bool SetSuspendState(bool hibernate, bool forceCritical, bool disableWakeEvent);"
set "s3=public static void PowerSleep(){ SetSuspendState(false, false, false); }';"
set "s4=add-type -name Import -member $m -namespace Dll; [Dll.Import]::PowerSleep();"
set "ps_powersleep=%s1%%s2%%s3%%s4%" 
call powershell.exe -NoProfile -NonInteractive -NoLogo -ExecutionPolicy Bypass -Command "%ps_powersleep:"=\"%"
exit


它甚至可以用作一个大的单行命令:

powershell.exe -C "$m='[DllImport(\"Powrprof.dll\",SetLastError=true)]static extern bool SetSuspendState(bool hibernate,bool forceCritical,bool disableWakeEvent);public static void PowerSleep(){SetSuspendState(false,false,false); }';add-type -name Import -member $m -namespace Dll; [Dll.Import]::PowerSleep();"


#11 楼

这是有关使用CLI关机的文章。

Microsoft提供了PsTools,它为您提供CLI关机以及其他有用的工具。你可以在这里得到。

#12 楼

只有QUICK SLEEPER对我有效(在Windows 7,8,10中有效)。
p.s.源代码在这里。

评论


您是否有机会提供指向您从中获取文件的实际站点的链接?直接链接到下载文件,尤其是在使用URL缩短程序时,可能会使文件显得特别可疑,因为它是恶意软件编写者经常采用的策略。

–Mokubai♦
16 Mar 20 '16在7:01

好的,我已经更新了指向官方网站的链接。

–T.Todua
16-4-20在13:51