Index: base/setup/usetup/interface/usetup.c =================================================================== --- base/setup/usetup/interface/usetup.c (revision 63958) +++ base/setup/usetup/interface/usetup.c (working copy) @@ -4095,6 +4095,7 @@ PAGE_NUMBER Page; LARGE_INTEGER Time; NTSTATUS Status; + BOOLEAN Old; NtQuerySystemTime(&Time); @@ -4296,6 +4297,7 @@ NtDelayExecution(FALSE, &Time); /* Reboot */ + RtlAdjustPrivilege(SE_SHUTDOWN_PRIVILEGE, TRUE, FALSE, &Old); NtShutdownSystem(ShutdownReboot); NtTerminateProcess(NtCurrentProcess(), 0); } Index: base/setup/usetup/usetup.h =================================================================== --- base/setup/usetup/usetup.h (revision 63958) +++ base/setup/usetup/usetup.h (working copy) @@ -48,6 +48,7 @@ #include #include #include +#include /* Filesystem headers */ #include Index: ntoskrnl/po/power.c =================================================================== --- ntoskrnl/po/power.c (revision 63958) +++ ntoskrnl/po/power.c (working copy) @@ -830,6 +830,7 @@ { /* Not granted */ DPRINT1("ERROR: Privilege not held for shutdown\n"); + ASSERT(FALSE); //return STATUS_PRIVILEGE_NOT_HELD; HACK! }