Carbon.Accounts/Modules/PureInvoke/1.0.0/src/netapi32.cs

using System;
using System.ComponentModel;
using System.Runtime.InteropServices;
 
namespace PureInvoke
{
    public static class NetApi32
    {
 
        [DllImport("NetApi32.dll", CharSet = CharSet.Auto, SetLastError = true)]
        public static extern int NetLocalGroupAddMembers(
            string servername, //server name
            string groupname, //group name
            UInt32 level, //info level
            ref LocalGroupMembersInfo0 buf, //Group info structure
            UInt32 totalentries //number of entries
        );
 
        [DllImport("NetApi32.dll", CharSet = CharSet.Auto, SetLastError = true)]
        public static extern int NetLocalGroupDelMembers(
            string servername, //server name
            string groupname, //group name
            UInt32 level, //info level
            ref LocalGroupMembersInfo0 buf, //Group info structure
            UInt32 totalentries //number of entries
        );
 
        [DllImport("NetAPI32.dll", CharSet = CharSet.Unicode)]
        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,
            IntPtr resume_handle);
 
        [DllImport("Netapi32.dll", SetLastError = true)]
        public static extern int NetApiBufferFree(IntPtr buffer);
 
        [StructLayout(LayoutKind.Sequential)]
        public struct LocalGroupMembersInfo0
        {
            [MarshalAs(UnmanagedType.SysInt)]
            public IntPtr pSID;
 
        }
    }
}