Récuperation de privilege sur un partage

cs_sam2004 Messages postés 8 Date d'inscription samedi 10 avril 2004 Statut Membre Dernière intervention 22 avril 2004 - 22 avril 2004 à 21:38
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019 - 22 avril 2004 à 21:50
Salut tous, j'ai utilisé la fonction NetShareEnum avec la structure de donnée SHARE_INFOS_2 mai pas de resultat .
est ce que qlqu'un a une idée comment recuperer les permission sur un partage ?
merci.

le code qui j'ai utiliser set le suivant :

//---------------------------------
//--------------------------------------------------------------------
typedef DWORD (__stdcall *NetShareEnumNT_t)(
wchar_t *server,
DWORD level,
byte **buf,
DWORD prefmaxlen,
DWORD *entriesread,
DWORD *totalentries,
DWORD *resume );
//--------------------------------------------------------------------
typedef struct _SHARE_INFO_2_NT {
LPWSTR shi2_netname;
DWORD shi2_type;
LPWSTR shi2_remark;
DWORD shi2_permissions;
DWORD shi2_max_uses;
DWORD shi2_current_uses;
LPWSTR shi2_path;
LPWSTR shi2_passwd;
} SHARE_INFO_2_NT, *PSHARE_INFO_2_NT, *LPSHARE_INFO_2_NT;
//--------------------------------------------------------------------
void __fastcall InfosPartage::GetPartage2(char* ip)
{
int cbBuffer=0;
PSHARE_INFO_2_NT buff, p;
DWORD res=NULL;
DWORD er=0,tr=0,resume=0, i;
HINSTANCE hNet = 0;
hNet = LoadLibrary( "netapi32.dll" );
if ( hNet == 0 ) ShowMessage("La librairie netapi32.lib non charger");
NetApiBufferFree_t NetApiBufferFreeNT = 0;
NetShareEnumNT_t NetShareEnumNT = 0;
NetShareEnumNT = (NetShareEnumNT_t) GetProcAddress( hNet, "NetShareEnum" );
if ( NetShareEnumNT == 0 )
ShowMessage("Fonction NetShareEnum non trouver");
NetApiBufferFreeNT = (NetApiBufferFree_t) GetProcAddress( hNet, "NetApiBufferFree" );
if ( NetApiBufferFreeNT == 0 )
ShowMessage("Fonction NetApiBufferFree non trouver");
char str1[256];
strcpy(str1, "\\\");
strcat(str1, ip);
WCHAR hst[20];
MultiByteToWideChar( CP_ACP, 0, str1, strlen(str1)+1, hst, sizeof(hst)/sizeof(hst[0]));
do
{
res = NetShareEnumNT(hst, 2, (LPBYTE *)&buff, -1, &er, &tr, &resume);if(res ERROR_SUCCESS || res ERROR_MORE_DATA)
{
p = buff;
for(i=1;i<=er;i++)
{
WideCharToMultiByte( CP_ACP, 0, (LPCWSTR)p->shi2_netname, -1,nom, 256, NULL, NULL );
WideCharToMultiByte( CP_ACP, 0, (LPCWSTR)p->shi2_remark, -1,comment, 256, NULL, NULL );
WideCharToMultiByte( CP_ACP, 0, (LPCWSTR)p->shi2_path, -1,path, 256, NULL, NULL );
WideCharToMultiByte( CP_ACP, 0, (LPCWSTR)p->shi2_passwd, -1,motp, 256, NULL, NULL );
strcpy(tmp1,"");
switch(p->shi2_type)
{
case STYPE_DISKTREE:
strcat(tmp1, "Lecteure ou Partition disque");
break;
case STYPE_PRINTQ:
strcat(tmp1, "Imprimente");
break;
case STYPE_DEVICE:
strcat(tmp1, "Communication device");
break;
case STYPE_IPC:
strcat(tmp1, "Communication Interprocessus(IPC)");
break;
case STYPE_SPECIAL:
strcat(tmp1, "Partage réservé communications interprocessus(IPC$)");
break;
default:
strcat(tmp1, "Communication Interprocessus(IPC)");
break;
}
strcpy(typep,tmp1);
maxu=p->shi2_max_uses;
if(maxu==-1) strcpy(maxuser,"Maximum d'utilisateurs");
else itoa(maxu, maxuser,10);
if(couru==-1) strcpy(couruser,"");
else itoa(couru, couruser,10);
couru=p->shi2_current_uses;
switch(p->shi2_permissions)
{
case ACCESS_READ:
strcpy(tmp1, "Lecture");
break;
case ACCESS_WRITE:
strcpy(tmp1, "Ecriture");
break;
case ACCESS_CREATE:
strcpy(tmp1, "Creation");
break;
case ACCESS_EXEC:
strcpy(tmp1, "Execution");
break;
case ACCESS_DELETE:
strcpy(tmp1, "Suppression");
break;
case ACCESS_ATRIB:
strcpy(tmp1, "Atribution");
break;
case ACCESS_PERM:
strcpy(tmp1, "Permession");
break;
case ACCESS_ALL:
strcpy(tmp1, "Toutes");
break;
default:
strcpy(tmp1, "<Type inconnu>");
break;
}
strcpy(typea,tmp1);
FormPartage->aff_partage(nom,path,typep,typea,comment,maxuser,couruser);
p++;
}
NetApiBufferFreeNT(buff);
}
else {
LPVOID lpMsgBuf;
FormatMessage(
FORMAT_MESSAGE_ALLOCATE_BUFFER |
FORMAT_MESSAGE_FROM_SYSTEM |
FORMAT_MESSAGE_IGNORE_INSERTS,
NULL,
res,
MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
(LPTSTR) &lpMsgBuf,
0,
NULL
);
LocalFree( lpMsgBuf );
ShowMessage((char *)lpMsgBuf);
}
} while (res==ERROR_MORE_DATA);
}
//---------------------------------

1 réponse

BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
22 avril 2004 à 21:50
C'est quoi
LocalFree( lpMsgBuf );
ShowMessage((char *)lpMsgBuf);

y aurait pas inversion a faire ???

ciao...
BruNews, Admin CS, MVP Visual C++
0
Rejoignez-nous