begin process at 2008 07 21 00:47:52
1 213 530 membres
431 nouveaux aujourd'hui
14 167 membres club

Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : lister les utilisateurs d'un groupe [ Système / Autre ] (deathsurfer)

lister les utilisateurs d'un groupe le 29/06/2007 11:20:07

deathsurfer
Bonjour à tous! Voilà j'arrive à récuperer les différents groupes et utilisateurs mais je n'arrive pas à récuperer les utilisateurs d'un groupe.
J'aimerais que ca fasse du genre:
Groupe1
User1 du Groupe1
User2 du Groupe 1
Groupe2
User1 du Groupe2
User2 du Groupe2 etc...

Voici le code qui permet de les lister indépendamment:
Code :
 
Dim chemin, message, Item, Classe AsObject
Dim computer AsString = "NOM_PC"
message = "Liste des utilisateurs et des groupes sur " & computer & Chr(10) & Chr(10)
chemin= GetObject("WinNT://" & computer & ",computer")
MsgBox(message)
ForEach Item In chemin
'pour les utilisateurs
Classe = Item.Class
If Classe = "User"Then
message = message & Classe & Chr(9) & Item.name & Chr(10)
MsgBox(message)
EndIf
'pour les groupes
If Classe = "Group"Then
message = message & Classe & Chr(9) & Item.name & Chr(10)
MsgBox(message)
EndIf
Next

Merci a tous de votre aide!

Re : lister les utilisateurs d'un groupe le 29/06/2007 15:22:26

izords

Voici un code qui permet de faire ca mais je code en C#. Je suis certain que tu pourra trouvé l'équivalent en VB.

Classe

using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Runtime.InteropServices;
namespace NetworkFunctions
{
 public class NetworkAPI
 {
  #region LOCAL_GROUP_INFO_1 (Structure)
  [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
  public struct LOCALGROUP_INFO_1
  {
   [MarshalAs(UnmanagedType.LPWStr)]
   public string lgrpi1_name;
   [MarshalAs(UnmanagedType.LPWStr)]
   public string lgrpi1_comment;
  }
  #endregion

  #region LOCALGROUP_MEMBER_INFO_1 (Structure)
  [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
  public struct LOCALGROUP_MEMBERS_INFO_1
  {
   public int lgrmi1_sid;
   public int lgrmi1_sidusage;
   public string lgrmi1_name;
  }
  #endregion

  #region NetLocalGroupAdd (API Call)
  [DllImport("Netapi32.dll")]
  public extern static int NetLocalGroupAdd([MarshalAs(UnmanagedType.LPWStr)] string servername, int level, ref LOCALGROUP_INFO_1 buf, int parm_err);
  #endregion

  #region NetLocalGroupDel(API Call)
  [DllImport("Netapi32.dll")]
  public extern static int NetLocalGroupDel([MarshalAs(UnmanagedType.LPWStr)] string servername, [MarshalAs(UnmanagedType.LPWStr)] string groupname);
  #endregion

  #region NetLocalGroupGetInfo (API Call)
  [DllImport("Netapi32.dll")]
  public extern static int NetLocalGroupGetInfo([MarshalAs(UnmanagedType.LPWStr)] string servername, [MarshalAs(UnmanagedType.LPWStr)] string groupname, int level, out IntPtr bufptr);
  #endregion

  [DllImport("Netapi32.dll")]
  public extern static int NetLocalGroupSetInfo([MarshalAs(UnmanagedType.LPWStr)] string servername, [MarshalAs(UnmanagedType.LPWStr)] string groupname, int level, ref LOCALGROUP_INFO_1 buf, int parm_err);

  [DllImport("Netapi32.dll")]
  public extern static int NetLocalGroupEnum([MarshalAs(UnmanagedType.LPWStr)]
                    string servername, int level, out System.IntPtr bufptr, int prefmaxlen, out
                    int entriesread, out int totalentries, out int resumehandle);

  [DllImport("Netapi32.dll")]
  public extern static int NetApiBufferFree(IntPtr Buffer);

  [DllImport("Netapi32.dll")]
  public extern static int NetLocalGroupGetMembers([MarshalAs(UnmanagedType.LPWStr)] string servername, [MarshalAs(UnmanagedType.LPWStr)] string localgroupname, int level, out IntPtr bufptr, int prefmaxlen, out int entriesread, out int totalentries, out int resumehandle);

  public NetworkAPI()
  { }
 }
}


Puis les 2 fonctions qui permette d'utiliser cette classe et de lister les groupes ainsi que leurs membres
Mettre les 2 using suivant :

using System.Runtime.InteropServices;
using NetworkFunctions;

private void getGroup()
{
 int EntriesRead;
 int TotalEntries;
 int Resume;
 System.IntPtr bufPtr;

 NetworkAPI.NetLocalGroupEnum(null, 1, out bufPtr, -1, out EntriesRead, out TotalEntries, out Resume);

 if (EntriesRead > 0)
 {
  NetworkAPI.LOCALGROUP_INFO_1[] Groups = new NetworkAPI.LOCALGROUP_INFO_1[EntriesRead];
  IntPtr iter = bufPtr;
  for (int i = 0; i < EntriesRead; i++)
  {
   Groups[i] = (NetworkAPI.LOCALGROUP_INFO_1)Marshal.PtrToStructure
            (iter, typeof(NetworkAPI.LOCALGROUP_INFO_1));
   iter = (System.IntPtr)((int)iter + Marshal.SizeOf(typeof(NetworkAPI.LOCALGROUP_INFO_1)));
   Response.Write(Groups[i].lgrpi1_name + "<span style='color:#999999'>&nbsp;&nbsp;&nbsp;(" + Groups[i].lgrpi1_comment + ")</span>" + "<br>");
   getMembers(Groups[i].lgrpi1_name);
  }
  NetworkAPI.NetApiBufferFree(bufPtr);
 }
}

private void getMembers(string group)
{
 int EntriesRead;
 int TotalEntries;
 int Resume;
 System.IntPtr bufPtr;

 NetworkAPI.NetLocalGroupGetMembers(null, group, 1, out bufPtr, -1,
    out EntriesRead, out TotalEntries, out Resume);

 if (EntriesRead > 0)
 {
  NetworkAPI.LOCALGROUP_MEMBERS_INFO_1[]
     Members = new NetworkAPI.LOCALGROUP_MEMBERS_INFO_1[EntriesRead];
  System.IntPtr iter = bufPtr;
  for (int i = 0; i < EntriesRead; i++)
  {
   Members[i] = (NetworkAPI.LOCALGROUP_MEMBERS_INFO_1)Marshal.PtrToStructure
              (iter, typeof(NetworkAPI.LOCALGROUP_MEMBERS_INFO_1));
   iter = (System.IntPtr)((int)iter + Marshal.SizeOf(typeof(NetworkAPI.LOCALGROUP_MEMBERS_INFO_1)));
   Response.Write("&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;" + Members[i].lgrmi1_name + "<br>");
  }
  NetworkAPI.NetApiBufferFree(bufPtr);
 }
}


Re : lister les utilisateurs d'un groupe le 30/06/2007 12:03:23

deathsurfer
Lol merci izords il n' ya que toi qui me réponde!
J'ai trouvé la solution et il n'y a presque pas de lignes de codes, si ca interesse quelqu'un....

Re : lister les utilisateurs d'un groupe le 30/06/2007 15:33:46

izords
Moi ca m'intéresse !!

Re : lister les utilisateurs d'un groupe le 01/07/2007 17:02:17

deathsurfer
Dim SAM, message, Item, Classe As Object
        Dim objGroup, objUser As Object
        Dim computer As String = "NOM_PC"
        message = "Liste des utilisateurs et des groupes sur " & computer & Chr(10) & Chr(10)
        SAM = GetObject("WinNT://" & computer & ",computer")
        MsgBox(message)
        For Each Item In SAM
            Classe = Item.Class
            If Classe = "Group" Then
                message = message & Classe & Chr(9) & Item.name & Chr(10)
                MsgBox("Groupe:" & Item.name)
                objGroup = GetObject("WinNT://" & computer & "/" & Item.name)
                For Each objUser In objGroup.Members
                    MsgBox("utilisateurs: " & objUser.Name)
                Next
            End If
        Next
Tiens izords!


Classé sous : message, utilisateurs, item, classe, chr

Participer à cet échange

Pub



Appels d'offres

Dessins techniques
Budget : 60€
Animation Flash - Doma...
Budget : 370€
Application flash medi...
Budget : 1 000€

CalendriCode

Juillet 2008
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Téléchargements

Boutique

Boutique de goodies CodeS-SourceS