¿Cómo obtiene VC el nombre de dominio o grupo de trabajo local?
1. Utilice
int DimCount;
void main()
{
LPNETRESOURCE lpNetRC_p=NULL. ;
DimCount=0;
Enumerar(lpNetRC_p) ;
}
2. bool Enumerar(LPNETRESOURCE lpNetRC_p)
{
int UserCount=0;
HANDLE hEnum = 0
DWORD dwScope = RESOURCE_GLOBALNET;
DWORD dwType = RESOURCETYPE_ANY;
DWORD dwResult = WNetOpenEnum(
dwScope, // alcance de la enumeración
dwType, // recurso tipos para enumerar
0, // enumera todos los recursos o RESOURCEUSAGE_CONTAINER
lpNetRC_p, // puntero a la estructura de recursos (NULL la primera vez)
&hEnum // manejar el recurso
if( dwResult != NO_ERROR )
{
int re=GetLastError(); p>
p>
return FALSE;
}
DWORD dwBuffer = 16384; // 16K es un tamaño razonable
DWORD dwEntries = 0xFFFFFFFF ; // enumera todas las entradas posibles
LPNETRESOURCE lpBuffer;
// primero asigna el búfer para las estructuras NETRESOURCE...
lpBuffer=(LPNETRESOURCE)GlobalAlloc(GPTR) ,dwBuffer ) ;
dwResult = WNetEnumResource(hEnum,&dwEntries,lpBuffer,&dwBuffer
if( dwResult == NO_ERROR )
{
for( registrar DWORD i = 0 ; i {
p> // memcpy(&lpBuffer[i],&lpBuffer[i],sizeof(NETRESOURCE));
if(lpNetRC_p)
{
if( lpBuffer[i].dwDisplayType==RESOURCEDISPLAYTYPE_DOMAIN)
{
//Aquí se obtiene el nombre de dominio local o el nombre del grupo de trabajo y se coloca en la matriz
strcpy((char *)DimInfo[DimCount++].dimName,lpBuffer[i].lpRemoteName
}
else
{ //aquí Solo); obtenga el nombre de usuario y colóquelo en la matriz
strcpy((char *)DimInfo[DimCount-1].User[UserCount++].UserName,lpBuffer[i].lpRemoteName+2); >
if(UserCount>=20)UserCount=0;
}
}
DWORD a=lpBuffer[i].dwDisplayType, c= lpBuffer[i].dwUsage;
//RESOURCEUSAGE_CONTAINER == (lpBuffer[i].dwUsage & RESOURCEUSAGE_CONTAINER)
//Las condiciones anteriores enumeran todos los recursos de la red
if(a==6||a&RESOURCEDISPLAYTYPE_DOMAIN==RESOURCEDISPLAYTYPE_DOMAIN||c&RESOURCEUSAGE_CONTAINER==RESOURCEUSAGE_CONTAINER)
{
if(!Enumerate(&lpBuffer[i]) )
{
return FALSE;
}
//strcpy((char *)Usuario[UserCount++].NombreDeUsuario,lpBuffer [i]. lpRemoteName+2);
//if(UserCount>=20)UserCount=0
}
}
} <; /p>
else if(dwResult != ERROR_NO_MORE_ITEMS)
{
return FALSE
}
if(lpBuffer ) GlobalFree((HGLOBAL) lpBuffer)
WNetCloseEnum(hEnum)
devuelve VERDADERO;