![]() |
![]() |
![]() |
![]() |
![]() |
FTP | ![]() |
![]() |
CCD | ![]() |
![]() |
Buscar | ![]() |
![]() |
Trucos | ![]() |
![]() |
Trabajo | ![]() |
![]() |
Foros | ![]() |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
![]() |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
![]() 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 ...le he exado un vistazo pero no he consegido sacar muxo en claro.....esq no encuentro una buena ayuda para CreateProcessAs....
|
#4
|
|||
|
|||
![]() 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 |
![]() |
|
|
![]() |
|