Angel Ferreira
unread,Sep 20, 2011, 10:45:02 AM9/20/11Sign in to reply to author
Sign in to forward
You do not have permission to delete messages in this group
Either email addresses are anonymous for this group or you need the view member email addresses permission to view the original message
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.