Ver Mensaje Individual
  #2  
Antiguo 23-11-2006
pjmedina pjmedina is offline
Miembro
 
Registrado: abr 2006
Posts: 84
Reputación: 19
pjmedina Va por buen camino
Prueba con esta funcion a ver que tal te va...

Código Delphi [-]
function ShutDownWindows(Flag: word): Boolean;
var
  TokenPriv: TTokenPrivileges;
  H: DWord;
  HToken: THandle;
begin 
  if Win32Platform = VER_PLATFORM_WIN32_NT then 
    begin 
      OpenProcessToken(GetCurrentProcess,
          TOKEN_ADJUST_PRIVILEGES,HToken);
      LookUpPrivilegeValue(NIL, 'SeShutdownPrivilege',
          TokenPriv.Privileges[0].Luid);
      TokenPriv.PrivilegeCount := 1;
      TokenPriv.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;
      H := 0;
      AdjustTokenPrivileges(HToken, FALSE,
         TokenPriv, 0, PTokenPrivileges(NIL)^, H);
      CloseHandle(HToken);
    end; 
  Result := ExitWindowsEx(Flag, 0);
end;

La llamada a la función es:

Código Delphi [-]
ShutDownWindows(EWX_SHUTDOWN)

Suerte
Responder Con Cita