[DllImport("NetApi32.dll", CharSet = CharSet.Auto, SetLastError = true)]
static extern Int32 NetLocalGroupDelMembers(
string servername,
string groupname,
UInt32 level,
ref LOCALGROUP_MEMBERS_INFO_3 buf,
UInt32 totalentries
);
Declare Function NetLocalGroupDelMembers Lib "netapi32.dll" (TODO) As TODO
None.
Do you know one? Please contribute it!
None.
Please add some!
struct LOCALGROUP_MEMBERS_INFO_3
{
[MarshalAs(UnmanagedType.LPWStr)]
public string Domain;
}
[DllImport("advapi32.dll", CharSet = CharSet.Auto, SetLastError = true)]
static extern bool LookupAccountSid(
string SystemName,
[MarshalAs(UnmanagedType.LPArray)] byte[] Sid,
StringBuilder Name,
ref uint NameCount,
StringBuilder ReferencedDomainName,
ref uint ReferencedDomainNameCount,
out SID_NAME_USE SIDUse);
public static bool DelUserFromGroup(string UserName)
{
bool bOk = false;
StringBuilder sbName = new StringBuilder();
uint uiName = (uint)sbName.Capacity;
StringBuilder sbReferencedDomainName = new StringBuilder();
uint uiReferencedDomainNameCount = (uint)sbReferencedDomainName.Capacity;
SID_NAME_USE eUse;
// Sid for BUILTIN\Administrators
byte[] baSid = new byte[] { 1, 2, 0, 0, 0, 0, 0, 5, 32, 0, 0, 0, 32, 2 };
if (!LookupAccountSid(null, baSid, sbName, ref uiName, sbReferencedDomainName, ref uiReferencedDomainNameCount, out eUse))
return bOk;
// prepare user name
LOCALGROUP_MEMBERS_INFO_3 info;
info.Domain = UserName;
int iRetVal = 0;
if ((iRetVal = NetLocalGroupDelMembers(null, sbName.ToString(), 3, ref info, 1)) != 0)
bOk = true;
return bOk;
}