Groupe local

cs_antoine76 Messages postés 30 Date d'inscription mardi 24 mai 2005 Statut Membre Dernière intervention 20 juillet 2005 - 22 juin 2005 à 11:42
cs_antoine76 Messages postés 30 Date d'inscription mardi 24 mai 2005 Statut Membre Dernière intervention 20 juillet 2005 - 20 juil. 2005 à 15:58
Salut a tous,
je voudrais avec une appli vb6, lister les sous groupes et utilisateurs d'un groupe local, j'ai fais pas mal de recherches sur ce site et sur d'autres et pour l'instant je ne vois vraiment pas comment faire (je ne sais meme pas si c est possible, peut etre via active directory), si quelqun pouvait m'aider...

2 réponses

cs_shaoni Messages postés 186 Date d'inscription mercredi 11 avril 2001 Statut Membre Dernière intervention 12 septembre 2007
22 juin 2005 à 14:35
** c'est le code que j'utilise pour remplacer la commande ifmember de
novell qui fait ** cruelement defaut a windows ! fonctionne en local et
avec l'active dir .



'Declaration pour obtenir les groupes du serveur

Private Declare Function NetUserGetGroups Lib "netapi32" _

(lpServer As Any, UserName As Byte, ByVal Level As Long, _

lpBuffer As Long, ByVal PrefMaxLen As Long, lpEntriesRead As _

Long, lpTotalEntries As Long) As Long



Private Declare Function NetUserGetLocalGroups _

Lib "Netapi32.dll" (lpServer As Any, UserName As Byte, _

ByVal Level As Long, ByVal Flags As Long, lpBuffer As Long, _

ByVal MaxLen As Long, lpEntriesRead As Long, _

lpTotalEntries As Long) As Long





Private Declare Sub CopyMemory Lib "kernel32" _

Alias "RtlMoveMemory" (Destination As Any, Source As Any, _

ByVal Length As Long)



Private Declare Function lstrlenW Lib "kernel32" _

(ByVal lpString As Long) As Long



Private Declare Function NetApiBufferFree Lib "netapi32" _

(ByVal pBuffer As Long) As Long



Public Function GetUserGroups(ByVal ServerName As String, ByVal
UserName As String, Optional bLocalGroups As Boolean = False) As
String()



Dim bytUser() As Byte

Dim bytServer() As Byte

Dim bytBuffer() As Byte



Dim lBuffer As Long

Dim lEntries As Long

Dim lMaxLen As Long

Dim lTotalEntries As Long

Dim lRet As Long

Dim lGroups() As Long

Dim lLen As Long

Dim iCtr As Long



Dim sGroups() As String



If bLocalGroups Then

ServerName = vbNullChar

Else

If Left(ServerName, 2) <> "\" Then ServerName = "\" & ServerName

End If



bytServer = ServerName & vbNullChar

bytUser = UserName & vbNullChar



If bLocalGroups Then

lRet = NetUserGetLocalGroups(bytServer(0), bytUser(0), 0, 0, lBuffer, 1024, lMaxLen, lTotalEntries)



Else

lRet = NetUserGetGroups(bytServer(0), bytUser(0), 0, lBuffer, 1024, lMaxLen, lTotalEntries)

End If



If lRet = 0 And lMaxLen > 0 Then

ReDim lGroups(lMaxLen - 1) As Long

ReDim sGroups(lMaxLen - 1) As String



CopyMemory lGroups(0), ByVal lBuffer, lMaxLen * 4

For iCtr = 0 To lMaxLen - 1

lLen = lstrlenW(lGroups(iCtr)) * 2

If lLen > 0 Then

ReDim bytBuffer(lLen - 1) As Byte

CopyMemory bytBuffer(0), ByVal lGroups(iCtr), lLen

sGroups(iCtr) = bytBuffer

End If

Next

Else

ReDim sGroups(0) As String

End If



If lBuffer > 0 Then NetApiBufferFree (lBuffer)



GetUserGroups = sGroups



End Function



Private Sub Main()

'*****Déclaration des variables*****

dim Retour() As String

dim e as integer

'*****Fin de déclaration*****





Retour() = GetUserGroups(Serveur, Utilisateur)

for e=0 to ubound(retour)

msgbox retour(e)

next e



End Sub


font=Tahoma]a+
Shaoni ..[/font=Tahoma
0
cs_antoine76 Messages postés 30 Date d'inscription mardi 24 mai 2005 Statut Membre Dernière intervention 20 juillet 2005
20 juil. 2005 à 15:58
merci beaucoup, tu m as bien aide sur ce coup la.
0
Rejoignez-nous