begin process at 2012 02 11 16:42:10
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

NetLocalGroupEnum


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

NetLocalGroupEnum

jeudi 9 février 2006 à 13:11:26 | NetLocalGroupEnum

mathieu57100

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.

jeudi 9 février 2006 à 13:18:16 | Re : NetLocalGroupEnum

mathieu57100

je viens d'essayé un truc...dans la boucle for

comme la focntion ne donne qu'un groupe su deux, je me suis dit qu'elle s'attendait à en trouver d'autre, à cause de la valeur de totalentries mais qu'elle n'en trouvé plus.
donc si je remplace la boucle for par la suivante, je n'ai plus l'erreur de violation j'sais pas quoi...

for (unsigned int i=0; i<totalentries/2-1; i++)
{...}
           
reste plus qu'à trouvé pourquoi je n'ai qu'un groupe sur deux...
jeudi 9 février 2006 à 13:45:24 | Re : NetLocalGroupEnum

mathieu57100

Réponse acceptée !

c'est bon, j'ai trouvé...:


void __fastcall TfrmPrinc::Button1Click(TObject *Sender)
{
        NET_API_STATUS NetStatus = NERR_Success;
        LOCALGROUP_INFO_0 *GroupInfo;
        LPCWSTR servername = L"f09015";
        LPBYTE pbuf        = NULL;
        DWORD level        = 0,
              prefmaxlen   = 8192,//MAX_PREFERRED_LENGTH
              entriesread  = 0,
              totalentries = 0,
              resumehandle = 0;

        NetStatus = NetLocalGroupEnum(servername,
                                      level,
                                      &pbuf,
                                      prefmaxlen,
                                      &entriesread,
                                      &totalentries,
                                      &resumehandle);

        if(NetStatus==NERR_Success)
        {
                GroupInfo = (LOCALGROUP_INFO_0 *)pbuf;
                for (unsigned int i=0; i<totalentries; i++)
                {
                        ShowMessage(GroupInfo->lgrpi0_name);
                        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);
        }
}



Cette discussion est classée dans : showmessage, pbuf, netstatus, nerr, netlocalgroupenum


Répondre à ce message

Sujets en rapport avec ce message

Pbm HOOK_CBT [ par lastpixl ] J'ai essayé de mettre un en place un hook CBT comme pour les autres types de hooks, mais à chaque fois quand je lance le programme il me plante mon en fermer une session user ouvert sur votre serveur [ par sam2004 ] Bonjour tous, pour fermer une session ouvert sur un serveur ou vous etre administrateur j'ai programmé ce code mais j'ai pas put localisé mon erreur, fin de lecture avec TMediaPlayer [ par Tymk ] J'ai des problèmes avec BCB pour détecter la fin de lecture avec un TMediaPlayer. J'utilise la propriété OnNotify mais certainement pas comme il faut ecrire dans un edit a partir d'un fichier texte a lire ligne pa ligne [ par sarah62223 ] BonjourJ'ai ecrit un programme pour venir lire dans un fichier ligne par ligne et de l'introduire dans un edit ,donc premiere ligne premier editdeuxie du C au C++ [ par nidhaletec ] si quelqu un m aide à convertir cette fonktion en C++ ; c écrit en C ;void remplacer (char *filename, char *str,  char *occ){    FILE *f = fopen(filen acces et builder c++ [ par mohamedinfo ] Bonjour, j'ai un petit pb avec bordland C++ builder 6. Je suis en train de fair  : "géstion d'une mini systeme bancaire"j utilise les base de donne a Récuperer un Bitmap en mémoire et l'afficher dans un picturebox [ par porschemini ] [^^sad1]Bonjour, Mes souvenirs en C, sont loin, ça fait 20 ans mais je dois réaliser un programme en C++ qui récupère une image d'une caméra et l'affi


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,437 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales