ExitWindowsEX()函数用来退出、重启或注销系统

ExitWindowsEX()函数用来退出、重启或注销系统。
  函数原型:
  BOOL ExitWindowsEx(
  UINT uFlags, // 关闭参数
  DWORD dwReserved // 系统保留,一般取0
  );

编辑本段参数uFlag

  参数:uFlags
  指定关闭的类型。此参数必须有下列值的组合:

EWX_FORCE

  EWX_FORCE
  强制终止进程。当此标志设置,Windows不会发送消息WM_QUERYENDSESSION和WM_ENDSESSION的消息给目前在系统中运行的程序。这可能会导致应用程序丢失数据。因此,你应该只在紧急情况下使用此标志。

EWX_LOGOFF

  EWX_LOGOFF
  关闭所有进程,然后注销用户。

EWX_POWEROFF

  EWX_POWEROFF
  关闭系统并关闭电源。该系统必须支持断电。
  Windows要求:
  Windows NT中调用进程必须有 SE_SHUTDOWN_NAME 特权。
  Windows 9X中:可以直接调用。

EWX_REBOOT

  EWX_REBOOT
  关闭系统,然后重新启动系统。
  Windows要求:
  Windows NT中:调用进程必须有SE_SHUTDOWN_NAME特权。
  Windows 9X中:可以直接调用。

EWX_SHUTDOWN

  EWX_SHUTDOWN
  关闭系统,安全地关闭电源。所有文件缓冲区已经刷新到磁盘上,所有正在运行的进程已经停止。
  Windows要求:
  Windows NT中:调用进程必须有SE_SHUTDOWN_NAME特权。
  Windows 9X中:可以直接调用。

编辑本段参数dwReserved

  参数:dwReserved
  保留,这参数被忽略。一般取0。
  返回值
  如果函数成功,返回值为非零。

  如果函数失败,返回值是零。想获得更多错误信息,请调用GetLastError函数。

# include <windows.h>
# include <mmsystem.h>
# include <stdio.h>
int main()
{
  HANDLE hToken;
  TOKEN_PRIVILEGES tkp;
  DWORD dwVersion;
  
  dwVersion = GetVersion();         // 得到WINDOWS NT或Win32的版本号
  char buff[255];
   sprintf(buff,"%x",dwVersion);

  if(dwVersion < 0x80000000)        // 用于判断WIN系列,从而设置相应的权限
  {
   OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken);
   LookupPrivilegeValue(NULL, SE_SHUTDOWN_NAME, &tkp.Privileges[0].Luid);
   tkp.PrivilegeCount = 1;
   tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
   AdjustTokenPrivileges(hToken, FALSE, &tkp, 0, (PTOKEN_PRIVILEGES)NULL, 0);
   //ExitWindowsEx(EWX_SHUTDOWN | EWX_FORCE, 0);
   ExitWindowsEx(EWX_SHUTDOWN , 0);

   //MessageBox(NULL,buff,"dwVersion < 0x80000000",MB_OK);
  }
  else
  {
   //ExitWindowsEx(EWX_FORCE | EWX_SHUTDOWN, 0);
   ExitWindowsEx( EWX_SHUTDOWN, 0);
	//MessageBox(NULL,buff,"dwVersion >= 0x80000000",MB_OK);
  }
  return 0;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值