Windows核心编程_关闭Windows

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/bjbz_cxy/article/details/82254137

下面介绍几种在Windows编程中关闭Windows的几种方式

首先介绍一个API

ExitWindowsEx

这个API是WIndows下为开发人员提供的对操作系统睡眠的几种方式

API介绍:

函数原型:

BOOL ExitWindowsEx(
UINT uFlags, // 关闭参数
DWORD dwReserved // 系统保留,一般取0
);

参数介绍:

uFlags
指定关闭的类型。此参数必须有下列值的组合:
EWX_FORCE
强制终止进程。当此标志设置,Windows不会发送消息WM_QUERYENDSESSION和WM_ENDSESSION的消息给目前在系统中运行的程序。这可能会导致应用程序丢失数据。因此,你应该只在紧急情况下使用此标志。
EWX_LOGOFF
关闭所有进程,然后注销用户。
EWX_POWEROFF
关闭系统并关闭电源。该系统必须支持断电。
Windows要求:
Windows NT中调用进程必须有 SE_SHUTDOWN_NAME 特权。
Windows 9X中:可以直接调用。
EWX_REBOOT
关闭系统,然后重新启动系统。
Windows要求:
Windows NT中:调用进程必须有SE_SHUTDOWN_NAME特权。
Windows 9X中:可以直接调用。
EWX_SHUTDOWN
关闭系统,安全地关闭电源。所有文件缓冲区已经刷新到磁盘上,所有正在运行的进程已经停止。
Windows要求:
Windows NT中:调用进程必须有SE_SHUTDOWN_NAME特权。
Windows 9X中:可以直接调用。
dwReserved
系统保留,这参数被忽略。一般取0。
返回值
如果函数成功,返回值为非零。
如果函数失败,返回值是零。想获得更多错误信息,请调用GetLastError函数。

1.注销

非常简单使用EWX_LOGOFF即可

ExitWindowsEx(EWX_LOGOFF,0);//注销当前用户

强制注销:

只需要将EWX_FORCE利用或运算符即可

ExitWindowsEx(EWX_FORCE|EWX_LOGOFF,0);//强制注销当前用户

2.重启

ExitWindowsEx(EWX_REBOOT, 0); //重启

强制重启

 ExitWindowsEx(EWX_FORCE|EWX_REBOOT, 0); //强制重启

3.关机

//此步骤需要提权,提权方法请参考我的其它文章

ExitWindowsEx(EWX_SHUTDOWN, 0); //关闭系统

强制关机

ExitWindowsEx((EWX_FORCE|EWX_SHUTDOWN, 0); //关闭系统

4.关闭电源

此步骤需要设备以及操作系统支持,和笔记本的关闭按钮一样,切断电源

ExitWindowsEx(EWX_POWEROFF, 0); //关闭系统并关闭电源

强制切断电源

ExitWindowsEx(EWX_FORCE|EWX_POWEROFF, 0); //强制关闭系统,并关闭电源

猜你喜欢

转载自blog.csdn.net/bjbz_cxy/article/details/82254137