如何执行与在 Win32 中单击开始、电源图标和 "Shut down" 相同的操作
How to do the same as clicking Start, then the power icon, then "Shut down" in Win32
在 Windows 10 和 11(我不确定以前的版本)如果你点击 开始 ,然后是电源图标,然后 关机 Windows关机然后下次开机就可以了:
快速启动
自动登录最后一个交互用户并锁定会话
启动“开始”菜单“启动”文件夹中的所有应用,但不启动关机时 运行 的任何其他应用。
我正在尝试使用 Win32 api 执行此操作,但我不知道如何执行此操作。 ExitWindowsEx()
函数有一个快速启动选项,但没有选项让用户在下次启动时重新登录。 InitiateSystemShutdownEx()
功能更加有限。
我注意到命令 shutdown /sg
关闭然后在下次启动时自动登录最后一个用户,但它不支持快速启动(混合关闭)并且它会重新启动之前的所有应用程序 运行,不仅仅是启动文件夹中的应用程序。
我假设 启动、电源、关机 必须使用其他一些方法来关机 Windows。如果有人知道如何重现此内容,请告诉我。
快速启动和休眠
首先要注意hibernate和fast startup是不一样的。简而言之,快速启动是介于休眠和正常关机之间的某种混合状态。 this 文章中有更多相关信息。
进入电脑休眠使用SetSuspendState
winapi.
将EWX_HYBRID_SHUTDOWN
传递给ExitWindowsEx
即可实现快速启动。
应用程序重启
您可以使用 RegisterApplicationRestart
注册重启应用程序,然后按照 this 文章的建议将标志 EWX_RESTARTAPPS
传递给 ExitWindowsEx
。
自动登录
重启后登录当前用户有多种方式。例如使用注册表 - HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\AutomaticRestartSignOnConfig
。有关它的更多信息以及可能更适合您的用例的其他选项,请参阅 this 文章。
如果其他人 运行 遇到此问题,解决方案是使用(未记录的)EWX_ARSO
标志和 ExitWindowsEx()
。
ExitWindowsEx()
的文档指出:
Syntax
BOOL ExitWindowsEx(
[in] UINT uFlags,
[in] DWORD dwReason
);
Parameters
[in] uFlags
The shutdown type. This parameter must include one of the following values.
EWX_HYBRID_SHUTDOWN
0x00400000
Beginning with Windows 8: You can prepare the system for a faster startup by combining the EWX_HYBRID_SHUTDOWN flag with the EWX_SHUTDOWN flag.
etc
它描述了确定 Windows 如何关闭的六个标志,但它没有提到 EWX_ARSO
标志,实际上谷歌搜索没有找到有用的信息。但是,该标志是在 winuser.h
中定义的,包含它的行为与在 Windows 中单击 开始、电源、关闭 完全相同。
在 Windows 10 和 11(我不确定以前的版本)如果你点击 开始 ,然后是电源图标,然后 关机 Windows关机然后下次开机就可以了:
快速启动
自动登录最后一个交互用户并锁定会话
启动“开始”菜单“启动”文件夹中的所有应用,但不启动关机时 运行 的任何其他应用。
我正在尝试使用 Win32 api 执行此操作,但我不知道如何执行此操作。 ExitWindowsEx()
函数有一个快速启动选项,但没有选项让用户在下次启动时重新登录。 InitiateSystemShutdownEx()
功能更加有限。
我注意到命令 shutdown /sg
关闭然后在下次启动时自动登录最后一个用户,但它不支持快速启动(混合关闭)并且它会重新启动之前的所有应用程序 运行,不仅仅是启动文件夹中的应用程序。
我假设 启动、电源、关机 必须使用其他一些方法来关机 Windows。如果有人知道如何重现此内容,请告诉我。
快速启动和休眠
首先要注意hibernate和fast startup是不一样的。简而言之,快速启动是介于休眠和正常关机之间的某种混合状态。 this 文章中有更多相关信息。
进入电脑休眠使用SetSuspendState
winapi.
将EWX_HYBRID_SHUTDOWN
传递给ExitWindowsEx
即可实现快速启动。
应用程序重启
您可以使用 RegisterApplicationRestart
注册重启应用程序,然后按照 this 文章的建议将标志 EWX_RESTARTAPPS
传递给 ExitWindowsEx
。
自动登录
重启后登录当前用户有多种方式。例如使用注册表 - HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\AutomaticRestartSignOnConfig
。有关它的更多信息以及可能更适合您的用例的其他选项,请参阅 this 文章。
如果其他人 运行 遇到此问题,解决方案是使用(未记录的)EWX_ARSO
标志和 ExitWindowsEx()
。
ExitWindowsEx()
的文档指出:
Syntax
BOOL ExitWindowsEx(
[in] UINT uFlags,
[in] DWORD dwReason
);
Parameters
[in] uFlags
The shutdown type. This parameter must include one of the following values.
EWX_HYBRID_SHUTDOWN
0x00400000
Beginning with Windows 8: You can prepare the system for a faster startup by combining the EWX_HYBRID_SHUTDOWN flag with the EWX_SHUTDOWN flag.
etc
它描述了确定 Windows 如何关闭的六个标志,但它没有提到 EWX_ARSO
标志,实际上谷歌搜索没有找到有用的信息。但是,该标志是在 winuser.h
中定义的,包含它的行为与在 Windows 中单击 开始、电源、关闭 完全相同。