Club Delphi  
    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

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 12-01-2007
Avatar de aeff
aeff aeff is offline
Miembro
 
Registrado: oct 2006
Ubicación: Cuba, Guantánamo
Posts: 348
Poder: 18
aeff Va camino a la fama
Question Api CreateProcessAsUser

hola colegas del club, ante todo mis especiales saludos y un tremendo FELICIDADES por este nuevo año, y para iniciar con mis preguntaderas quisera saber si alguien me puede decir como trabajar con la API CreateProcessAsUser, si pueden y no es mucha molestia, me pueden mostrar algun ejemplito???

gracias antemano

salu2!!!
Responder Con Cita
  #2  
Antiguo 12-01-2007
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.932
Poder: 27
delphi.com.ar Va por buen camino
Espero que te sea de utilidad:
Código Delphi [-]
procedure RunAs(ACommandLine, AUserName, ADomain, APassword: PAnsiChar);
var
  hToken: Cardinal;
  ProcessInfo: TProcessInformation;
  StartupInfo: TStartupInfo;

  function SetUserObjectFullAccess(hUserObject: THandle): Boolean;
  var
    Sd: PSecurity_Descriptor;
    Si: Security_Information;
  begin
    Sd := Ptr(LocalAlloc(LPTR, SECURITY_DESCRIPTOR_MIN_LENGTH));
    InitializeSecurityDescriptor(Sd, SECURITY_DESCRIPTOR_REVISION);
    SetSecurityDescriptorDacl(Sd, True, nil, False);

    Si := DACL_SECURITY_INFORMATION;
    Result := SetUserObjectSecurity(hUserObject, Si, Sd);

    LocalFree(HLOCAL(Sd));
  end;
begin
  Win32Check(LogonUser(AUserName, ADomain, APassword, LOGON32_LOGON_INTERACTIVE, LOGON32_PROVIDER_DEFAULT, hToken));
  try
    ImpersonateLoggedOnUser(hToken);
    try
      SetUserObjectFullAccess(GetThreadDesktop(GetCurrentThreadId));
      SetUserObjectFullAccess(GetProcessWindowStation);

      ZeroMemory(@StartupInfo, SizeOf(TStartupInfo));
      StartupInfo.cb := SizeOf(TStartupInfo);
      StartupInfo.wShowWindow := SW_SHOW;


      if not CreateProcessAsUser(hToken, nil, ACommandLine, nil, nil,
                         False, CREATE_NEW_CONSOLE or CREATE_NEW_PROCESS_GROUP,
                         nil, nil, StartupInfo, ProcessInfo) then
        RaiseLastOsError;
    finally
      RevertToSelf;
    end;
  finally
    CloseHandle(hToken);
  end;
end;

Saludos!
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita
  #3  
Antiguo 12-01-2007
Avatar de aeff
aeff aeff is offline
Miembro
 
Registrado: oct 2006
Ubicación: Cuba, Guantánamo
Posts: 348
Poder: 18
aeff Va camino a la fama
hmmmmmmm!!!

no se si es problema de no entender los parámetros pero no me funciona,
mira el ejemplo dellamada que tomé:

RunAs('C:\WINDOWS\regedit.exe','Alberto',nil, 'nra885');

que crees???

gracias de antemano
Responder Con Cita
  #4  
Antiguo 12-01-2007
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.932
Poder: 27
delphi.com.ar Va por buen camino
¿Te produce algún error?.. ¿No hace nada?... ¿Que windows utilizas?...
Ese código yo lo utilizo en una aplicación mía, pero esta plagado de compilación condicional, así que lo limpié un poco.
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita
  #5  
Antiguo 12-01-2007
fdelamo fdelamo is offline
Miembro
 
Registrado: oct 2005
Ubicación: Sotoca de Tajo - Guadalajara (ESP)
Posts: 86
Poder: 19
fdelamo Va por buen camino
Yo eso lo usé hace algún tiempo (no tengo el código aquí), pero recuerdo que además el usuario debía tener dos permisos especiales (uno era asignar memoria para otro usuario y el otro no recuerdo), no se si irán por ahí los tiros

A ver si tengo un poco de tiempo y busco el código

Un saludo
Responder Con Cita
  #6  
Antiguo 12-01-2007
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.932
Poder: 27
delphi.com.ar Va por buen camino
Bueno si.. es importante que el usuario tenga los permisos suficientes inlcusive los del file system. Por el ejemplo que da aeff no creo que venga por ahí el problema, pero no esta de mas aclararlo.

Saludos!
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita
Respuesta



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


La franja horaria es GMT +2. Ahora son las 23:25:53.


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