begin process at 2012 05 30 15:10:51
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

API

 > 

Récuperation de privilege sur un partage


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

Récuperation de privilege sur un partage

jeudi 22 avril 2004 à 21:38:14 | Récuperation de privilege sur un partage

sam2004

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);
}
//---------------------------------
jeudi 22 avril 2004 à 21:50:29 | Re : Récuperation de privilege sur un partage

BruNews

Administrateur CodeS-SourceS
C'est quoi
LocalFree( lpMsgBuf );
ShowMessage((char *)lpMsgBuf);

y aurait pas inversion a faire ???

ciao...
BruNews, Admin CS, MVP Visual C++


Cette discussion est classée dans : case, break, strcpy, shi2, tmp1


Répondre à ce message

Sujets en rapport avec ce message

determination de permission associé a unpartage [ par sam2004 ] Bonjour tous, pour enummerer le partage sur un hôte vous utilisez la fonction NetShareEnum de la librairie netapi32.dll et pour avoir plus information Problème avec char szClassName[ ] [ par pettirussu ] Bonjour,dans mon prgm, quand je le compil il m'affiche un message d'erreur au niveau de cette classe (au debut)Je n'arrive pas à comprendre l'erreur, switch ... case [ par didrocks ] J'ai un problème est mon case:int n=App->run; // dépendant de la partie du programme en cours switch(n); { case 1: // intro { App->BmpDeFond = App-> probleme de socket sur dev c++ [ par thunderfear ] bonjour,donc voila g un gros probleme avec les socket. dès que je compile un code avec un socket, le linker me dit des truc et n'execute pas le prog. [Hook Clavier] Pb d'accents circonflexes [ par BeLZeL ] J'ai fait un programme simple dont le but est de faire un hook clavier global, et de tout mettre dans un fichier log.Tout fonctionne, sauf une chose, help me !!! [ par pascal13 ] j arrive pas a compiler mon programme...je sais que g qlq que souccis au niveau de la sauvegarde des données sur le fichier toutes remarques seront le Problème de SWITCH [ par EMSIEN ] Bonjour Voilà J'ai rencontré un problème Lors de l'utilisation d'une instruction switch,D'abord je veux réaliser une fonction permettant de retourner Petit jeu en mode texte [:D] [ par thedivxboy ] Alors je carbure en C aujourd'hui ...Pourquoi la tête ne se déplace-t-elle pas au bon endroit ?Pourquoi dois-je mettre un getchar() à un certain endr CASE [ par CHKDSK2K ] Bonjour, j'ai une variable de type char "choix";  je voudrais utiliser cette variable dans un switch mais il ne veut passwitch(choix){    case 'maison Static et mfc [ par xXTomTomXx ] voici mon code: int CbChange = CbCam->GetCurSel(); //on récupère la position de la combobox <FONT color=#0000ff size=2


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
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,593 sec (4)

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