请参考下面的代码:
HANDLE hToken; 
TOKEN_PRIVILEGES tkp; 
LUID sedebugnameValue; 
if ( ! OpenProcessToken( GetCurrentProces(),TOKEN_ADJUST_PRIVILEGES
 | TOKEN_QUERY, &hToken ) ) 
    return; 
if ( !LookupPrivilegeValue( NULL, SE_SHUTDOWN_NAME , 
&sedebugnameValue ) ) 
 { CloseHandle( hToken ); 
   return; 
 } 
tkp.PrivilegeCount = 1; 
tkp.Privileges[0].Luid = sedebugnameValue; 
tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED; AdjustTokenPrivileges( hToken, FALSE, &tkp, sizeof tkp, NULL, NULL);
CloseHandle( hToken ); 
if(!ExitWindowsEx(EWX_REBOOT,0L)) 
  AfxMessageBox("重新启动失败!"); ////EWX_REBOOT可以用其它参数代替来实现关闭电源等功能。