Voici une classe qui te permet d'utiliser l'API Netapi32.dll
using System;
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 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()
{}
}
}
Exemple pour l'ajout d'un groupe
public void AddGroup()
{
NetworkAPI.LOCALGROUP_INFO_1 NewGroup = new NetworkAPI.LOCALGROUP_INFO_1();
NewGroup.lgrpi1_name = txtName.Text;
NewGroup.lgrpi1_comment = txtComments.Text;
if(NetworkAPI.NetLocalGroupAdd(null, 1, ref NewGroup, 0)==0)
{
//OK
}
else
{
//Erreur
}
}