problemas con la funcion LogonUser

14/01/2004 - 16:38 por Carolina Gonzalez | Informe spam
estoy con un problema que me tiene intrigadisima.

Una funcion de Visual C++, me esta complicando la vida en un trabajo para
controlar un escritorio. se tienes alguna idea en donde seguir mirando te
lo agradecere.

Se lee archivo de configuracion para extraer User, Password, Domain y se
pasan estos parametros a la funcion LogonUser de Windows. Este
procedimientoesta
echo en Visual C++. Al momento de extraer la informacion del archivo los
parametros estan correctamente leidos. La funcion LogonUser es exitosa pero
al revisar el nombre de la carpeta asociada al profile aparece cualquier
cosa

Por ejemplo, en vez de aparecer

C:\Documents and Settings\cgonzalez

aparece

c:\Documents and setting c!!!!!lz


sin embargo la validacion del usuario en el dominio es correcta y las
subcarpetas
se crean correctamente.

La pregunta es porque se cambia el username.

Un detalle adicional es si se coloca en el codigo las credenciales cgonzalez
con la password, esto pasa bien pero al momentos de leerlos de un archivo
ocurre el problema.

Saludos y cualquier ayuda es bienvenida.

Carolina

Preguntas similare

Leer las respuestas

#1 Rodrigo Corral González
14/01/2004 - 18:21 | Informe spam
Tiene toda la pinta de que estes pisando memoria, o que tienes algun buffer
de tamaño insuficiente o algo asi. Si pudieses poner codigo quiza te podamos
ayudar.

Un saludo
Rodrigo Corral González
#2 Carolina Gonzalez
15/01/2004 - 14:05 | Informe spam
aca va el codigo



BOOL ECGinaDLLLogonUser(PECGinaDLL_CONTEXT p)

{

HANDLE hUser;

TOKEN_STATISTICS tokenStats;

TOKEN_GROUPS *pGroups;

DWORD dwSize, i;

BOOL status = FALSE;



if (LogonUser((char *) p->UserName,(char *) p->Domain ,(char *)
p->Password , LOGON32_LOGON_INTERACTIVE, LOGON32_PROVIDER_DEFAULT, &hUser))

{

p->hUserToken = hUser;

GetTokenInformation(p->hUserToken, TokenStatistics,
&tokenStats,sizeof(tokenStats),&dwSize);

p->AuthID = tokenStats.AuthenticationId;

pGroups = LocalAlloc(LMEM_FIXED, 2048);



if (!pGroups)

{

CloseHandle(hUser);

return FALSE;

}



GetTokenInformation(p->hUserToken, TokenGroups, pGroups,
2048, &dwSize);



if (dwSize > 2048)

{

pGroups = LocalReAlloc(pGroups, LMEM_FIXED, dwSize);

GetTokenInformation(p->hUserToken ,TokenGroups, pGroups,2048,
&dwSize);

}



for (i = 0; i < pGroups->GroupCount; i++)

{

if ((pGroups->Groups[i].Attributes &

SE_GROUP_LOGON_ID) == SE_GROUP_LOGON_ID) {

CopySid(GetLengthSid(p->pSid), p->pSid,
pGroups->Groups[i].Sid );

break;

}

}

LocalFree(pGroups);

p->AuthID = tokenStats.AuthenticationId;

return TRUE;

}

return FALSE;

}







/***************************************************************************
********************************************************************/

VOID GetDomainInfo(PECGinaDLL_CONTEXT Xp)

{

HKEY hKey;

FILE *fp;

char *linea;

char filename[100];



sprintf(filename,"%s", "C:\\ctxecc.ini");



fp = fopen(filename, "r");



linea = (char *) malloc(100);



while( fgets(linea, 100, fp) != NULL )

{

linea[strlen(linea) - 1] = '\0';



if( strncmp("user", linea, 4) == 0 )

wcscpy(Xp->UserName , (const wchar_t *) &linea[5]);



if( strncmp("password", linea, 8) == 0 )

wcscpy(Xp->Password , (const wchar_t *) &linea[9]);



if( strncmp("domain", linea, 6) == 0 )

wcscpy(Xp->Domain , (const wchar_t *) &linea[7]);

}

fclose(fp);



WriteProfileString(TEXT("Winlogon"), TEXT("x1_DomainName"), (char *)
Xp->Domain);

WriteProfileString(TEXT("Winlogon"), TEXT("x2_DomainUser"), (LPTSTR)
Xp->UserName);

WriteProfileString(TEXT("Winlogon"), TEXT("x3_DomainPassword"),
(LPTSTR) Xp->Password);

}



"Rodrigo Corral González" wrote in message
news:%
Mostrar la cita
buffer
Mostrar la cita
podamos
Mostrar la cita
Ads by Google
Search Busqueda sugerida