Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Coloboración Paypal con ClubDelphi

 
 
Herramientas Buscar en Tema Desplegado
  #6  
Antiguo 30-11-2013
Avatar de nlsgarcia
[nlsgarcia] nlsgarcia is offline
Miembro Premium
 
Registrado: feb 2007
Ubicación: Caracas, Venezuela
Posts: 2.206
Poder: 23
nlsgarcia Tiene un aura espectacularnlsgarcia Tiene un aura espectacular
Club Delphi,

Cita:
Empezado por escafandra
...como hacer un "RunAs" no solo como administrador, sino como cualquier usuario...
Esta es la implementación en Delphi del código sugerido en el Msg #5:
Código Delphi [-]
function CreateProcessWithLogonW(lpUsername, lpDomain, lpPassword: PWideChar;
                                 dwLogonFlags: Cardinal;
                                 lpApplicationName, lpCommandLine: PWideChar;
                                 dwCreationFlags: Cardinal;
                                 lpEnvironment: Pointer;
                                 lpCurrentDirectory: PWideChar;
                                 var lpStartupInfo: TStartupInfo;
                                 var lpProcessInfo: TProcessInformation
                                 ): LongBool; stdcall; external 'advapi32.dll';

function RunAs(const UserName, Domain, Password, PrgName, CmdLine : PWideChar; Wait : Boolean) : Boolean;

var
   StrInf : TStartupInfo;
   PrcInf : TProcessInformation;

begin

   FillChar(StrInf,SizeOf(TStartupInfo),0);
   FillChar(PrcInf,SizeOf(TProcessInformation),0);
   StrInf.cb := SizeOf(TStartupInfo);
   StrInf.wShowWindow := SW_SHOWNORMAL;

   Result := CreateProcessWithLogonW(UserName,
                                     Domain,
                                     Password,
                                     1, 
                                     PrgName,
                                     CmdLine,
                                     0,
                                     nil,
                                     nil,
                                     StrInf,
                                     PrcInf);

   if Result then
   begin
      if Wait then WaitForSingleObject(PrcInf.hProcess, INFINITE);
      CloseHandle(PrcInf.hProcess);
      CloseHandle(PrcInf.hThread);
   end
   else
      MessageDlg(SysErrorMessage(GetLastError),mtError,[mbOK],0);

end;
El código anterior permite ejecutar un proceso con el usuario, password y dominio requerido con un switch de control de espera de terminación de proceso.

Un ejemplo de su uso:
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
begin
   RunAs('UserName','Dominio','Password','cmd.exe','/k dir c:\', True);
end;
El código anterior inicia el shell de Windows y ejecuta el comando dir con la opción /k (Ejecutar un cmd y mantener abierto el shell) esperando que el proceso finalize (Cerrar el Shell) por medio del switch en True.

Revisen estos links:
Cita:
CreateProcessWithLogonW function : http://msdn.microsoft.com/en-us/libr...=vs.85%29.aspx

Aplicacion con derechos de administrador : http://www.clubdelphi.com/foros/showthread.php?t=84603
Espero sea útil

Nelson.

Última edición por nlsgarcia fecha: 30-11-2013 a las 05:10:08.
Responder Con Cita
 


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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
Ejecutar Como administrador una aplicacion desde otra mia phyrian API de Windows 1 06-03-2012 07:54:18
Auto Borrar Aplicacion / Cambiar Privilegios Aplicacion / Ejecutar como Administrador jogagua Varios 15 27-10-2011 01:38:07
Obligar ejecucion como Administrador de mi aplicacion aram2r Varios 6 06-04-2011 21:02:35
Ejecutar BDE Administrador Colgueit Conexión con bases de datos 4 08-05-2006 18:38:04
Ejecutar aplicación al iniciar Windows nesetru Varios 5 10-02-2004 09:09:56


La franja horaria es GMT +2. Ahora son las 12:26:19.


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