bonjour, je suis sur un projet (c++ builder) dans lequel je doit scanner les groupes locaux des ordinateurs...
j'utilise l'API NetLocalGroupEnum.avec le code suivant:
void __fastcall TfrmPrinc::Button1Click(TObject *Sender)
{
NET_API_STATUS NetStatus = NERR_Success;
LPCWSTR servername = L"f09015";
LPBYTE pbuf = NULL;
DWORD level = 0,
prefmaxlen = 8192,
entriesread = 0,
totalentries = 0,
resumehandle = 0;
// DWORD i;
LOCALGROUP_INFO_1 *GroupInfo;
DWORD dwLastError = 0;
int iRetOp = 0;
BOOL bRet = TRUE;
NetStatus = NetLocalGroupEnum(servername,
level,
&pbuf,
prefmaxlen,
&entriesread,
&totalentries,
&resumehandle);
if (NetStatus != NERR_Success || pbuf == NULL)
{
dwLastError = GetLastError();
bRet = FALSE;
}
else//if(NetStatus==NERR_Success)
{
GroupInfo = (LOCALGROUP_INFO_1 *)pbuf;
for (unsigned int i=0; i<totalentries; i++)
{
ShowMessage(GroupInfo->lgrpi1_comment);
GroupInfo++;
if(NetStatus==ERROR_ACCESS_DENIED){ShowMessage("ERROR_ACCESS_DENIED");}
if(NetStatus==ERROR_MORE_DATA){ShowMessage("ERROR_MORE_DATA");}
if(NetStatus==NERR_InvalidComputer){ShowMessage("NERR_InvalidComputer");}
if(NetStatus==NERR_BufTooSmall){ShowMessage("NERR_BufTooSmall");}
}
}
if (pbuf)
{
NetApiBufferFree(pbuf);
}
}
lorsque j'execute cette fonction elle m'affiche un groupe sur deux en commançant par le deuxième et lorsqu'elle arrive au dernier, j'ai un plantage de l'appli qui me dit:
"le projet a provoqué une classe d'exeption EAccessViolation avec le message'Violation à l'adresse 'zzzzzzzzz' dans le module 'kernel32.dll'. Lecture de l'adresse 'yyyyyyyyy'.
Processus stoppé. "
quelqu'un aurait-il une réponse à me donné?
merci d'avance.