关闭计算机,重新启动计算机,注销

//关机
if(AfxMessageBox("是否要关闭计算机?",MB_YESNO)==IDYES)
 {
  HANDLE htoken;
  TOKEN_PRIVILEGES tkp;
  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_POWEROFF,NULL);
 }
//重新启动
if(AfxMessageBox("是否要重新启动计算机?",MB_YESNO)==IDYES)
 {
  HANDLE htoken;
  TOKEN_PRIVILEGES tkp;
  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_REBOOT,NULL);
 } 
//注销
 if(AfxMessageBox("是否需要注销?",MB_YESNO)==IDYES)
  ::ExitWindowsEx(EWX_LOGOFF,NULL);  

posted on 2006-06-24 08:40  路吾  阅读(569)  评论(0编辑  收藏  举报

导航