Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > API de Windows
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

 
 
Herramientas Buscar en Tema Desplegado
  #5  
Antiguo 06-04-2006
Avatar de PoZi
PoZi PoZi is offline
Miembro
 
Registrado: abr 2006
Posts: 11
Poder: 0
PoZi Va por buen camino
Unhappy Sigue sin funcionar

Hola
Muchas Gracias por ayudarme Lepe.
Lo que me dices ya lo había probado yo, pero por si acaso lo volví a probar, y nada, sigo sin poder hacer un logoff del Pc; lo único que
me funciona es ShutDownWindows(EWX_REBOOT); y ShutDownWindows(EWX_POWEROFF); . No sé que estaré haciendo mal:
Creo un form con 2 botones:
Código Delphi [-]
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
  ShutDownWindows(EWX_LOGOFF or EWX_FORCE);
end;
 
procedure TForm1.BitBtn2Click(Sender: TObject);
begin
  ShutDownWindows(EWX_FORCE);
end;
 
function TForm1.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;

y el ejecutable Project1.exe lo meto en la carpeta C:\Prueba. Creo una aplicación que arranca Project1.exe con privilegios de administrador:
Código Delphi [-]
function CreateProcessWithLogonW(
  lpUsername,lpDomain,lpPassword: PWideChar;
  dwLogonFlags: Dword;
  lpApplicationName: PWideChar;
  lpCommandLine: PWideChar;
  dwCreationFlags: Dword;
  lpEnvironment: Pointer;
  lpCurrentDirectory: PWideChar;
  const lpStartupInfo: tSTARTUPINFO;
  var lpProcessInformation: TProcessInformation): BOOL ; stdcall; external 'advapi32.dll';
begin
  { TODO -oUser -cConsole Main : Insert code here }
  FillChar (StartupInfo, SizeOf(StartupInfo), #0);
  StartupInfo.cb := SizeOf(StartupInfo);
  CreateProcessWithLogonW(StringToOleStr('UsuarioConPermisos'), nil, StringToOleStr('Contraseña'), 0, 
    StringToOleStr('C:\Prueba\Project1.exe'), nil, 0, nil, StringToOleStr('C:\Prueba'), 
    StartupInfo, ProcessInfo);
end.

Lo ejecuto, se inicia el form y al pulsar a alguno de los botones lo único que ocurre es que el form se cierra ; el guindols ni se inmuta ...
Muchas gracias y perdonen las molestias.

Última edición por PoZi fecha: 03-05-2006 a las 20:52:16.
Responder Con Cita
 



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Dar privilegios del SYSDBA a otro usuario Eolo Firebird e Interbase 3 21-03-2004 05:48:15
Roles - Usuarios y privilegios Osorio Firebird e Interbase 2 13-02-2004 23:34:31
Privilegios en interbase acrophet Conexión con bases de datos 1 09-02-2004 15:07:35


La franja horaria es GMT +2. Ahora son las 07:32:04.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi