Impersonaion Client

313 views
Skip to first unread message

Angel Ferreira

unread,
Sep 20, 2011, 10:45:02 AM9/20/11
to Comunidad de Visual Foxpro en Español
Buenos dias,

Alguno de ustedes ha usado la Autenticacion Impersonate desde VFP?

Les comento que tengo un equipo con Windows 7, no esta conectado a un
dominio y tengo dos usuarios: El mio y el del Administrador del
Equipo.

Sucede que existen ciertas actividades que requieren la autenticacion
del Administrador del Equipo, para lo cual la sugerencia en una
pregunta anterior, era utilizar Impersontation.

Encontre codigo de las API que se usan para tal fin. Lo que quiero
hacer es ejecutar un EXE y que no solicite la autenticacion de un
Administrator en vista de que anteriormente ya lo hicimos via
Impersonation.

El codigo que utilizo es el siguiente:

#define LOGON32_PROVIDER_DEFAULT 0
#define LOGON32_LOGON_INTERACTIVE 2
#define LOGON32_LOGON_NETWORK 3
#define LOGON32_LOGON_BATCH 4
#define LOGON32_LOGON_SERVICE 5
#define LOGON32_LOGON_UNLOCK 7

DECLARE integer LogonUser IN AdvApi32.DLL;
string szUsername,;
string lpszDomain,;
string lpszPassword,;
integer dwLogonType,;
integer dwLogonProvider,;
integer @phToken

DECLARE integer ImpersonateLoggedOnUser IN AdvApi32.DLL integer hToken
DECLARE integer RevertToSelf IN AdvApi32.DLL

local nToken
nToken = 0

IF LogonUser("Administrador","","PASSWORD",LOGON32_LOGON_INTERACTIVE,
LOGON32_PROVIDER_DEFAULT, @nToken) = 0
MESSAGEBOX("Fallo la Autenticacion del Administrador",16,"Error",0)
RETURN
ENDIF

IF ImpersonateLoggedOnUser(nToken) = 0
MESSAGEBOX("Fallo la Autenticacion del Administrador",16,"Zest",0)
RETURN
ENDIF

LOCAL oErr As Exception
TRY

oShell = CREATEOBJECT("WScript.Shell")
MESSAGEBOX("Creo")
oShell.RUN("e:\pruebasvfp\widgets\MyExeFile.EXE")
oShell = NULL
RELEASE oShell
CATCH oErr
MESSAGEBOX(oErr.Message + " " + oErr.LineContents)
ENDTRY
RevertToSelf()


La autenticacion la hace bien, pero luego el codigo que continua,
falla! En primer lugar me indica que no puede crear una instancia del
objeto WScript, luego me dice que no existe el EXE en cuestion y el
mismo se encuentra en la ruta correcta. Lo raro, es que si me cambio
de usuario en Windows (como Administrador), el codigo funciona bien.

No se si tenga algo que ver que no este conectado a un Dominio, como
pueden observar en la Funcion LOGON() el parametro DOMINIO esta vacio.

Si alguien tiene experiencia con esto, mucho les agradeceria.

Saludos,
Angel Ferreira.

Luis Mata

unread,
Sep 20, 2011, 10:36:16 AM9/20/11
to Comunidad de Visual Foxpro en Español
Trata de ejecutarlo desde su entorno de usuario, por ejm...
Usuarios/administrador/temp
pon ahi tu exe y ejecutalo


logo2 Mata Figueroa, Luis A.
Procesos, Tecnología de la Información y telecomunicaciones
TELF: (00 51 1) 617-4613
RPC : (00 51) 993597297
FAX : (00 51 1) 617-4601
lm...@cclf.com.pe
www.cclf.com.pe
imgfrm siguenos-fb

logo2[3].png
imgfrm[3].png
siguenos-fb[3].gif

Mario López

unread,
Sep 20, 2011, 1:28:51 PM9/20/11
to Comunidad de Visual Foxpro en Español
@Angel:

cuando cambiás de contexto de usuario, no "heredás" ninguna conexión
de red efectuada en el contexto anterior, así que en tu ejemplo, si el
disco E: es una unidad de red tendrías que reconectar con
WNetAddConnection antes de poder ejecutar algo o abrir algún archivo
en el mismo.

HTH
Mario

Marco Plaza

unread,
Sep 20, 2011, 4:44:34 PM9/20/11
to Comunidad de Visual Foxpro en Español
Hola creo que tienes un error en la declaración del Token.. declaraste
Integer phToken y usaste ntoken y htoken mas abajo. es token en todos.

Saludos

Marco Plaza

Marco Plaza

unread,
Sep 20, 2011, 4:53:02 PM9/20/11
to publice...@googlegroups.com
Aqui  mando un articulo de foxtalk que te explica paso a paso como hacerlo. Aparte de las declaraciones del token vi que te faltó un paso para asegurarte de que la aplicación obtuvo acceso con las credenciales que le suministraste.


Saludos

impersonar aplicacion.pdf
Reply all
Reply to author
Forward
0 new messages