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 20-02-2008
Irma Irma is offline
Registrado
 
Registrado: ago 2006
Posts: 9
Poder: 0
Irma Va por buen camino
RunAS

Hola a todos, necesito instalar un exe con permisos de administrados, al utilizar runas me funciona todo bien, pero no quiero q me solicite password, este debe ser transparente.

Les agradeciaria me ayudaran
Responder Con Cita
  #2  
Antiguo 20-02-2008
Avatar de ixMike
ixMike ixMike is offline
Miembro
 
Registrado: feb 2004
Posts: 1.151
Poder: 22
ixMike Va por buen camino
Cita:
Empezado por Irma Ver Mensaje
pero no quiero q me solicite password
Me parece que así incurriríamos en un fallo de seguridad en el sistema, ¿no?


Salu2.
Responder Con Cita
  #3  
Antiguo 20-02-2008
Irma Irma is offline
Registrado
 
Registrado: ago 2006
Posts: 9
Poder: 0
Irma Va por buen camino
Question RunAs

Gracias ixMike por responderme, disculpa creo que no supe explicarme, al instalar el exe con un usuario sin privilegios de Admin me da error de instalacion (crear un directorio en c:/ y grabar en este el exe). No quiero que estos usuarios restringidos sepan el "password de administrador". Por eso es que lo ejecuto con RunAs.

Utilizo este Codigo

function TForm1.RunExe2(Cmdline: string): boolean;
var
Startupinfo : TStartupinfo;
Processinfo : TProcessinformation;
parametros : String;
begin
Fillchar(Startupinfo,Sizeof(TStartupinfo),0);
with startupinfo do
begin
cb := sizeof(tstartUPinfo);
dwflags := STARTF_USESHOWWINDOW or STARTF_FORCEONFEEDBACK or STARTF_USESTDHANDLES;
WSHOWWINDOW := SW_SHOWNORMAL;
end;
result := CreateProcess(nil,PChar(cmdLine), nil, nil, true,NORMAL_PRIORITY_CLASS,nil, nil, Startupinfo, Processinfo);
if booltostr(result) = '0' then Messagebox(0,pchar(SysErrorMessage(GetLastError)),'Message',MB_ICONERROR);
end;


procedure TForm1.Button1Click(Sender: TObject);
begin
RunExe2('"C:\Windows\System32\RunAs.exe" /env /user:Administrator "C:\Facturacion\ProjectFactura.EXE"');
end;

En este codigo algo no funciona bien ......
Responder Con Cita
  #4  
Antiguo 20-02-2008
Avatar de cHackAll
[cHackAll] cHackAll is offline
Baneado?
 
Registrado: oct 2006
Posts: 2.159
Poder: 20
cHackAll Va por buen camino
Código Delphi [-]
var
 si: TStartupInfo = (cb: SizeOf(si); dwFlags: STARTF_USESHOWWINDOW or STARTF_FORCEONFEEDBACK; wShowWindow: SW_SHOWNORMAL);
 pi: TProcessInformation;
 
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';
 
procedure TForm1.Button1Click(Sender: TObject);
begin
 if not CreateProcessWithLogonW('Administrator', nil, '123456', 1, nil, 'cmd', 0, nil, nil, si, pi) then
  ShowMessage(SysErrorMessage(GetLastError));
end;

PD: no se por que usas STARTF_USESTDHANDLES si no estas definiendo hStdInput, hStdOutput, ó hStdError, y hasta STARTF_USESHOWWINDOW me suena innecesario pues de todas formas estas usando su Default.

Usa las etiquetas para poner tu código!!!

Saludos
Responder Con Cita
  #5  
Antiguo 20-02-2008
Irma Irma is offline
Registrado
 
Registrado: ago 2006
Posts: 9
Poder: 0
Irma Va por buen camino
Al instalar ProjectFactura.EXE en las Pc's, no tengo conocimiento de cual el password del usuario Administrador.
Responder Con Cita
  #6  
Antiguo 20-02-2008
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 27
jachguate Va por buen camino
Podes incluir una configuración donde se guarde... aunque eso de guardar la contraseña del administrador no es nada sano.

Finalmente... si el programa requiere permisos de administrador para ejecutarse... pues quien lo haga debiera llamar al administrador cada vez... ¿no te parece?

Hasta luego.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #7  
Antiguo 21-02-2008
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: 26
delphi.com.ar Va por buen camino
Te recomiendo ver la función RunAs que he subido al foro hace tiempo, con esta función no sería necesario utilizar la consola para crear procesos con otro usuario ya que utliza la función CreateProcessAsUser.

Saludos!
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita
  #8  
Antiguo 24-02-2008
alquimista alquimista is offline
Miembro
 
Registrado: ene 2008
Posts: 203
Poder: 17
alquimista Va por buen camino
¿con RunAs es necesario ejecutar tu exe a través de un loader o launcher? ¿es posible que una aplicación se ejecute con privilegios de admin con su propio código?

con respecto a que no se vea la pass de admin se podría pasar encriptada ,no?
Responder Con Cita
  #9  
Antiguo 25-02-2008
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 27
jachguate Va por buen camino
Cita:
Empezado por alquimista Ver Mensaje
¿es posible que una aplicación se ejecute con privilegios de admin con su propio código?
Lo que se me ocurre es que tu aplicación haga algo como esto:


Código:
  if NoEsAdministrador then
  begin
    RunAs(YoMismo, Administrador, contraseña);
    Terminar;
  end;
Hasta luego.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #10  
Antiguo 04-03-2008
alquimista alquimista is offline
Miembro
 
Registrado: ene 2008
Posts: 203
Poder: 17
alquimista Va por buen camino
no entiendo ese código.

Yomismo se refiere a un exe o a que?

Puedes ser mas claro por favor.
Responder Con Cita
  #11  
Antiguo 04-03-2008
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 27
jachguate Va por buen camino
Por YoMismo quise decir, la propia aplicación...

Para ser mas formales:

Código Delphi [-]
  if not UsuarioAdministrador() then
  begin
    RunAs(Application.ExeName, FUsuarioAdministrador, FPasswordAdministrador);
    Application.Terminate();
  end;

¿es lo suficientemente claro ahora?
__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #12  
Antiguo 06-03-2008
alquimista alquimista is offline
Miembro
 
Registrado: ene 2008
Posts: 203
Poder: 17
alquimista Va por buen camino
Luego debes de crear una aplicación A que ejecute a la aplicación B que es la que queremos que tenga privilegios de admin
.
Mi pregunta era si B puede iniciarse a ella misma con un proceso RunAs pero desde su propio código?

Código:
Programa B.exe
...
if not admin then
   EjecutateComoAdmin(B.EXE,etc..)
...
end.
Esto es posible??
Responder Con Cita
  #13  
Antiguo 07-03-2008
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 27
jachguate Va por buen camino
Cita:
Empezado por alquimista Ver Mensaje
Mi pregunta era si B puede iniciarse a ella misma con un proceso RunAs pero desde su propio código?

Código:
Programa B.exe
...
if not admin then
   EjecutateComoAdmin(B.EXE,etc..)
...
end.
Es justamente lo que hace el trozo de código que te envié...
__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #14  
Antiguo 25-03-2008
alquimista alquimista is offline
Miembro
 
Registrado: ene 2008
Posts: 203
Poder: 17
alquimista Va por buen camino
Bueno he hecho pruebas con el RunAs
y me da un error de excepción Code 1314
EOSError Code:_1314.
"El cliente no dispone de un privilegio requerido."

en una cuenta de administrador en XP SP2 dentro de la función RunAs
Código:
procedure TForm6.BitBtn1Click(Sender: TObject);
begin

  RunAs(PChar(Application.ExeName),PChar(Edit2.text) ,(*PChar(Edit4.text)*)nil , PChar(Edit3.text));
  try
  ListBox1.Items.SaveToFile('prueba.txt');
  except
  Edit1.text:='error';
  end;
end;
Alguna sugerencia.
He puesto el user y password en editbox y el dominio como nil (ordenador sin dominio, supongo)
Si se deben cambiar privilegios
¿Cuales son?
¿Se puede hacer todo desde Delphi de manera automática?
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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Ejecutar comando runas desde delphi bykram API de Windows 10 29-12-2004 20:29:24


La franja horaria es GMT +2. Ahora son las 03:31:45.


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