FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
|||
|
|||
ejecutar aplicacion desde delphi como otro usuario
Hola amigos mi duda existencial en estos momentos es como ejecuta una aplicacion desde delphi, yo lo hago con WinExec(), pero necesito ejecutarlo con un usuario distinto....osea me explico: Estoy en Win2000 y quiero ejecutar una instalacion de un programa desde delphi pero necesito permisos........desde windows se soluciona con "Ejecutar como" pero dsd delphi no tengo ni idea de como pasarle q lo quiero ejecutar con otro usuario....Podeis ayudarme? Gracias.
|
#3
|
|||
|
|||
Gracias ChicoLita
Gracias ...le he exado un vistazo pero no he consegido sacar muxo en claro.....esq no encuentro una buena ayuda para CreateProcessAs....
|
#4
|
|||
|
|||
Hola
Creo q es esto lo q andas buscando:
////////////////////////////////////////////////////////////////////// unit principal; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; const LOGON_WITH_PROFILE = 1; LOGON_NETCREDENTIALS_ONLY = 2; function CreateProcessWithLogon( lpUsername: PWChar; lpDomain: PWChar; lpPassword: PWChar; dwLogonFlags: DWORD; lpApplicationName: PWChar; lpCommandLine: PWChar; dwCreationFlags: DWORD; lpEnvironment: Pointer; lpCurrentDirectory: PWChar; const lpStartupInfo: TStartupInfo; var lpProcessInfo: TProcessInformation ): BOOL; stdcall; type TForm1 = class(TForm) Label3: TLabel; Label5: TLabel; b_ejecutar: TRxSpeedButton; b_acercade: TRxSpeedButton; b_cerrar: TRxSpeedButton; Label6: TLabel; open: TOpenDialog; aplicacion: TEdit; RxSpeedButton1: TRxSpeedButton; procedure Button1Click(Sender: TObject); private public end; var Form1: TForm1; implementation {$R *.dfm} uses funciones,acercade; function CreateProcessWithLogon; external advapi32 name 'CreateProcessWithLogonW'; procedure TForm1.Button1Click(Sender: TObject); var wUsername, wDomain, wPassword, wApplicationName: WideString; pwUsername, pwDomain, pwPassword, pwApplicationName: PWideChar; StartupInfo: TStartupInfo; ProcessInfo: TProcessInformation; begin wUsername := 'USUARIO'; wDomain := 'DOMINIO'; wPassword := 'CLAVE'; wApplicationName := aplicacion.text; pwUsername := Addr(wUsername[1]); pwDomain := Addr(wDomain[1]); pwPassword := Addr(wPassword[1]); pwApplicationName := Addr(wApplicationName[1]); FillChar(StartupInfo, SizeOf(TStartupInfo), 0); StartupInfo.cb := SizeOf(TStartupInfo); if not CreateProcessWithLogon(pwUsername,pwDomain,pwPassword,LOGON_WITH_PROFILE, pwApplicationName,nil,CREATE_DEFAULT_ERROR_MODE, nil,nil,StartupInfo,ProcessInfo) then RaiseLastOSError; end; ////////////////////////////////////////////////////////////////////// Con esto podras ejecutar aplicaciones utilizando permisos de otros usuarios. un saludo |
|
|
|