控制2000或者xp系统重新启动、关机

本文介绍了一种使用C++实现的电脑自动重启和关机的方法。通过获取操作系统权限,该程序能在Windows 2000/NT及后续版本上实现安全重启或关机。代码中详细展示了如何通过API调用来完成这一过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 1、控制电脑自动重新启动
// 设置电脑自动重新启动
void CStartDialogDlg::ReBoot()
{
 if (MessageBox("您确定要重新启动系统吗?","提示!",MB_YESNO)==IDYES)
 {
  OSVERSIONINFO   osv;     //定义一个操作系统信息的结构体
  osv.dwOSVersionInfoSize=sizeof(OSVERSIONINFO);
  GetVersionEx(&osv);       //查询当前操作系统
  if(osv.dwPlatformId==VER_PLATFORM_WIN32_NT)     //判断是否是2000/NT
  {
   //下面为向操作系统获取权限操作
   HANDLE   hProcess,hToken;
   TOKEN_PRIVILEGES   Privileges;
   LUID   luid;
   hProcess=GetCurrentProcess();
   //下面为打开当前进程对话
   OpenProcessToken(hProcess,TOKEN_ADJUST_PRIVILEGES,&hToken);
   Privileges.PrivilegeCount=1;
   LookupPrivilegeValue(NULL,SE_SHUTDOWN_NAME,&luid);
   Privileges.Privileges[0].Luid=luid;
   Privileges.Privileges[0].Attributes=SE_PRIVILEGE_ENABLED;
   AdjustTokenPrivileges(hToken,FALSE,&Privileges,NULL,NULL,NULL);
   ExitWindowsEx(EWX_REBOOT,0);
  }
  else
  {
   ExitWindowsEx(EWX_REBOOT,0);//调用ExitWindowsEx关闭机器。
   PostQuitMessage(0);
  }
 }
}
2、控制电脑自动关机
 if (MessageBox("您确定要关机吗?","提示!",MB_YESNO)==IDYES)
 {
  OSVERSIONINFO   osv;     //定义一个操作系统信息的结构体
  osv.dwOSVersionInfoSize=sizeof(OSVERSIONINFO);
  GetVersionEx(&osv);       //查询当前操作系统
  if(osv.dwPlatformId==VER_PLATFORM_WIN32_NT)     //判断是否是2000/NT
  {
   //下面为向操作系统获取权限操作
   HANDLE   hProcess,hToken;
   TOKEN_PRIVILEGES   Privileges;
   LUID   luid;
   hProcess=GetCurrentProcess();
   //下面为打开当前进程对话
   OpenProcessToken(hProcess,TOKEN_ADJUST_PRIVILEGES,&hToken);
   Privileges.PrivilegeCount=1;
   LookupPrivilegeValue(NULL,SE_SHUTDOWN_NAME,&luid);
   Privileges.Privileges[0].Luid=luid;
   Privileges.Privileges[0].Attributes=SE_PRIVILEGE_ENABLED;
   AdjustTokenPrivileges(hToken,FALSE,&Privileges,NULL,NULL,NULL);
   ExitWindowsEx(EWX_SHUTDOWN,0);
  }
  else
  {
   ExitWindowsEx(EWX_SHUTDOWN,0);//调用ExitWindowsEx关闭机器。
   PostQuitMessage(0);
  }
 }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值