Te paso las rutinas que yo cree en base al codigo publicado. Funcionan 
perfectamente en XP y Vista.


***
* Function ChangeUserAccount
*   Ocasiona que el programa se ejecute utilizando una cuenta de usuario 
diferente
***
Function ChangeUserAccount(cUser, cPassword, cDomain)
Local nRes

#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 lpszUsername, String lpszDomain, ;
        String lpszPassword, Integer dwLogonType, ;
        Integer dwLogonProvider, Integer @phToken
Declare Integer ImpersonateLoggedOnUser IN AdvApi32.DLL Integer phToken
Declare Integer CloseHandle in Win32API Integer hObject

If Type("cDomain") <> "C"
   cDomain = ""
Endif

nToken = 0
nRes = 0

If LogonUser(cUser, cDomain, cPassword, LOGON32_LOGON_INTERACTIVE, 
LOGON32_PROVIDER_DEFAULT, @nToken) <> 0
   If ImpersonateLoggedOnUser(nToken) <> 0
      nRes = nToken
   else
      CloseHandle(nToken)
   Endif
Endif

Return(nRes)



***
* Function CloseUserAccount
*   Revierte el usuario activo al anterior a la ejecucion de 
ChangeUserAccount
***
Function CloseUserAccount(nHandle)

Declare integer RevertToSelf IN AdvApi32.DLL
Declare Integer CloseHandle in Win32API Integer hObject

CloseHandle(nHandle)
RevertToSelf()

EndFunc


----- Original Message ----- 
From: "Karloz" <[EMAIL PROTECTED]>
To: "GUFA List Member" <[email protected]>
Sent: Tuesday, August 21, 2007 4:27 PM
Subject: [GUFA] LogonUser (AdvApi32.DLL)


Tenés razón Pablo... no estoy en un dominio, y la documentación dice que hay
que pasarle como parametro entonces una cadena nula, pero igual, no me anda.
Voy a probar en otra PC a ver qué pasa, porque en este Windows 2000 no lo
puedo hacer andar.


Muchas gracias por tus comentarios.




----- Mensaje original -----
De: "Pablo Pioli" <[EMAIL PROTECTED]>
Para: "GUFA List Member" <[email protected]>
Enviado: Martes, 21 de Agosto de 2007 11:37
Asunto: [GUFA] LogonUser (AdvApi32.DLL)


Si no estas en un dominio, no le pongas nada.

Pablo Pioli

----- Original Message -----
From: "Karloz" <[EMAIL PROTECTED]>
To: "GUFA List Member" <[email protected]>
Sent: Tuesday, August 21, 2007 9:20 AM
Subject: [GUFA] LogonUser (AdvApi32.DLL)


¿Así que anda perfecto?
Entonces le estoy errando en algo, porque no lo puedo hacer andar... no
porque me de error, sino porque no puedo hacer que se logee. Supongo
entonces que estoy ingresando mal los parámetros, y el único sería el
"dominio" (estoy un poco perdido con eso)... le estoy ingresando la primera
cadena que me devuelve la función SYS(0), ya que el WinRar, cuando uno
quiere cambiar la configuración desde una cuenta que no tiene permisos, abre
una ventana de login para entrar como administrador y me propone como
dominio esta cadena.

¿alguna sugerencia respecto de este parámetros?


Gracias.




Responder a