procedure TForm1.Button3Click(Sender: TObject);
const
  SE_SHUTDOWN_NAME = 'SeShutdownPrivilege';   // Borland forgot this declaration
var
  hToken       : THandle;
  tkp          : TTokenPrivileges;
  tkpo         : TTokenPrivileges;
  zero         : DWORD;
begin
         zero := 0;
         OpenProcessToken( GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY, hToken);
         LookupPrivilegeValue( nil,SE_SHUTDOWN_NAME, tkp.Privileges[ 0 ].Luid );
         tkp.PrivilegeCount := 1;
         tkp.Privileges[ 0 ].Attributes := SE_PRIVILEGE_ENABLED;
         AdjustTokenPrivileges( hToken, False, tkp, SizeOf( TTokenPrivileges ), tkpo, zero );
         ExitWindowsEx(EWX_SHUTDOWN, 0 );end;