/*-------------不帶消息提示的重啓動計算機-------------*/

void rebootWithoutMsg()   //不帶提示關機重啓
{
 HANDLE  hToken;   
 TOKEN_PRIVILEGES  tkp;   
  
 //  Get  a  token  for  this  process.   
  
 if  (!OpenProcessToken(GetCurrentProcess(),   
       TOKEN_ADJUST_PRIVILEGES    |  TOKEN_QUERY,  &hToken))   
     printf("OpenProcessToken");   
  
 //  Get  the  LUID  for  the  shutdown  privilege.   
  
 LookupPrivilegeValue(NULL,  SE_SHUTDOWN_NAME,   
       &tkp.Privileges[0].Luid);   
  
 tkp.PrivilegeCount  =  1;    //  one  privilege  to  set         
 tkp.Privileges[0].Attributes  =  SE_PRIVILEGE_ENABLED;   
  
 //  Get  the  shutdown  privilege  for  this  process.   
  
 AdjustTokenPrivileges(hToken,  FALSE,  &tkp,  0,   
       (PTOKEN_PRIVILEGES)NULL,  0);   
  
 //  Cannot  test  the  return  value  of  AdjustTokenPrivileges.   
  
 if  (GetLastError()  !=  ERROR_SUCCESS)   
     printf("AdjustTokenPrivileges");   
  
 //  Shut  down  the  system  and  force  all  applications  to  close.   
  
 if  (!ExitWindowsEx(EWX_REBOOT    |  EWX_FORCE,  0)) 
     printf("ExitWindowsEx");
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章