Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Go Back   Foros Club Delphi > Principal > Varios
Register FAQ Members List Calendar Guía de estilo Today's Posts

Coloboración Paypal con ClubDelphi

Reply
 
Thread Tools Search this Thread Display Modes
  #1  
Old 11/07/2013
Caroso Caroso is offline
Miembro
NULL
 
Join Date: Jul 2013
Posts: 44
Poder: 0
Caroso Va por buen camino
Question Ejecutar aplicacion como administrador en windows 7

Hola muchachos del foro... nuevamente recurro a ustedes.

Quería saber si alguno de ustedes sabia como hacer, por medio de código, que mi aplicación en Delphi se ejecute como administrador, es decir, que al correr mi aplicación automáticamente tengo privilegios de administrador.

Desde ya muchas gracias.

PD:\ necesito definir esto debido a que debo escribir en la carpeta C:\windows, en un sistema operativo Windows 7...
Reply With Quote
  #2  
Old 11/07/2013
nlsgarcia's Avatar
[nlsgarcia] nlsgarcia is offline
Miembro Premium
 
Join Date: Feb 2007
Location: Caracas, Venezuela
Posts: 2,206
Poder: 23
nlsgarcia Tiene un aura espectacularnlsgarcia Tiene un aura espectacular
Caroso,

Quote:
Originally Posted by Caroso
...como hacer, por medio de código, que mi aplicación en Delphi se ejecute como administrador...
Revisa este código:
Código Delphi [-]
program Project1;

uses
  Windows,
  Messages,
  SysUtils,
  Variants,
  Classes,
  Graphics,
  Controls,
  Forms,
  Dialogs,
  StdCtrls,
  ShellAPI;

{$R *.res}

procedure RunAsAdmin(const ProgramName: String; const Parameters: String = ''; Handle : HWND = 0);
var
   Info : TShellExecuteInfo;

begin

   FillChar(Info, SizeOf(Info), 0);

   Info.cbSize := SizeOf(Info);
   Info.Wnd := Handle;
   Info.fMask := SEE_MASK_FLAG_DDEWAIT or SEE_MASK_FLAG_NO_UI;
   Info.lpVerb := 'runas'; // Eleva los privilegios de ejecución a Administrador
   Info.lpFile := PChar(ProgramName);
   Info.lpParameters := PChar(Parameters);
   Info.nShow := SW_SHOWNORMAL;

   if not ShellExecuteEx(@Info) then
      RaiseLastOSError;

end;

begin
   RunAsAdmin('XProgram.exe');
end.
El código anterior ejecuta el programa XProgram.exe con privilegios de administrador, en este caso particular no se incluyeron parámetros. En lo referente a tu requerimiento XProgram es tu aplicación en Delphi.

Espero sea útil

Nelson.
Reply With Quote
  #3  
Old 11/07/2013
Casimiro Noteví's Avatar
Casimiro Noteví Casimiro Noteví is offline
Merodeador
 
Join Date: Sep 2004
Location: En algún lugar.
Posts: 32,682
Poder: 10
Casimiro Noteví Tiene un aura espectacularCasimiro Noteví Tiene un aura espectacular
Muy buena respuesta.
Reply With Quote
  #4  
Old 11/07/2013
Caroso Caroso is offline
Miembro
NULL
 
Join Date: Jul 2013
Posts: 44
Poder: 0
Caroso Va por buen camino
Smile

Hola nlsgarcia

Muchisimas gracias por tu respuesta, me sirvio muchisimo!!

y como dijo Casimiro Notevi...
Quote:
Originally Posted by Casimiro Notevi View Post
Muy buena respuesta.
Saludos
Reply With Quote
  #5  
Old 29/11/2013
escafandra's Avatar
[escafandra] escafandra is offline
Miembro Premium
 
Join Date: Nov 2007
Posts: 2,211
Poder: 22
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
Aunque ya es un poco viejo el tema, quisiera documentarlo un poco más aportando un enlace de este mismo foro en el que se trató en febrero de 2009. En él muestro como hacer un "runas" no solo como administrador, sino como cualquier usuario e identificando el loging por código.

Ejecutar Como en C++



Saludos.
Reply With Quote
  #6  
Old 30/11/2013
nlsgarcia's Avatar
[nlsgarcia] nlsgarcia is offline
Miembro Premium
 
Join Date: Feb 2007
Location: Caracas, Venezuela
Posts: 2,206
Poder: 23
nlsgarcia Tiene un aura espectacularnlsgarcia Tiene un aura espectacular
Club Delphi,

Quote:
Originally Posted by 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:
Quote:
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.

Last edited by nlsgarcia : 30/11/2013 at 05:10.
Reply With Quote
Reply



Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Forum Jump

Similar Threads
Thread Thread Starter Forum Replies Last Post
Ejecutar Como administrador una aplicacion desde otra mia phyrian API de Windows 1 06/03/2012 07:54
Auto Borrar Aplicacion / Cambiar Privilegios Aplicacion / Ejecutar como Administrador jogagua Varios 15 27/10/2011 01:38
Obligar ejecucion como Administrador de mi aplicacion aram2r Varios 6 06/04/2011 21:02
Ejecutar BDE Administrador Colgueit Conexión con bases de datos 4 08/05/2006 18:38
Ejecutar aplicación al iniciar Windows nesetru Varios 5 10/02/2004 09:09


All times are GMT +2. The time now is 05:30.


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