deathsurfer
Messages postés35Date d'inscriptionlundi 15 juin 2009StatutMembreDernière intervention28 juillet 2009
-
29 juin 2007 à 11:20
deathsurfer
Messages postés35Date d'inscriptionlundi 15 juin 2009StatutMembreDernière intervention28 juillet 2009
-
1 juil. 2007 à 17:02
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:<!-- BEGIN TEMPLATE: bbcode_code -->
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
izords
Messages postés20Date d'inscriptionsamedi 27 avril 2002StatutMembreDernière intervention 4 mars 2013 29 juin 2007 à 15:22
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 + " (" + Groups[i].lgrpi1_comment + ")" + "
");
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(" " + Members[i].lgrmi1_name + "
");
}
NetworkAPI.NetApiBufferFree(bufPtr);
}
}
deathsurfer
Messages postés35Date d'inscriptionlundi 15 juin 2009StatutMembreDernière intervention28 juillet 2009 1 juil. 2007 à 17:02
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!