int sub_systm_shudown()
{
HANDLE hdl ;
HANDLE phl ;
LUID pul ;
TOKEN_PRIVILEGES tkp ;
TOKEN_PRIVILEGES dkp ;
DWORD lkp ;
// ***
// *** Load Privilege Level
// ***
hdl = GetCurrentProcess() ;
OpenProcessToken( hdl, TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &phl ) ;
LookupPrivilegeValue( NULL, "SeShutdownPrivilege", &pul ) ;
// ***
// *** Change Level
// ***
tkp.PrivilegeCount = 1 ;
tkp.Privileges[0].Luid = pul ;
tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED ;
lkp = sizeof(dkp) ;
AdjustTokenPrivileges( phl, FALSE, &tkp, sizeof(tkp), &dkp, &lkp ) ;
// ***
// *** Reboot Windows
// ***
ExitWindowsEx ( EWX_REBOOT | EWX_FORCE, 0xFFFF ) ;
return TRUE ;
}
|