public extern static int NetUserGetLocalGroups([MarshalAs(UnmanagedType.LPWStr)] string servername,
[MarshalAs(UnmanagedType.LPWStr)] string username,
int level,
int flags,
out IntPtr bufptr,
int prefmaxlen,
out int entriesread,
out int totalentries);
[DllImport("Netapi32.dll", SetLastError=true)]
public static extern int NetApiBufferFree(IntPtr Buffer);
Declare Function NetUserGetLocalGroups Lib "netapi32.dll" (TODO) As TODO
[StructLayout(LayoutKind.Sequential, CharSet=CharSet.Unicode)]
public struct LOCALGROUP_USERS_INFO_0
{
public string groupname;
}
Do you know one? Please contribute it!
None.
Please add some!
//Exapmle code to place in class file or dll.
public static ArrayList GetUserLocalGroup(string ServerName,string Username, int Flags)
{
ArrayList myList = new ArrayList();
int EntriesRead;
int TotalEntries;
IntPtr bufPtr;
val = NetUserGetLocalGroups(ServerName,Username,0,Flags,out bufPtr,1024,out EntriesRead, out TotalEntries);
if(val==0)
{
_errormsg="Successful";
}
else
{
_errormsg="Username or computer not found";
}
if(Flags>1)
_errormsg="Flags can only be 0 or 1";
if(EntriesRead> 0)
{
LOCALGROUP_USERS_INFO_0[] RetGroups = new LOCALGROUP_USERS_INFO_0[EntriesRead];
IntPtr iter = bufPtr;
for(int i=0; i < EntriesRead; i++)
{
RetGroups[i] = (LOCALGROUP_USERS_INFO_0)Marshal.PtrToStructure(iter, typeof(LOCALGROUP_USERS_INFO_0));
iter = (IntPtr)((int)iter + Marshal.SizeOf(typeof(LOCALGROUP_USERS_INFO_0)));
myList.Add(RetGroups[i].groupname);
}
NetApiBufferFree(bufPtr);
}
return myList;
}
////////////////////////////////////////////////////////////////////////////////////////////////////////
//Expample code for calling application
ArrayList RetGroups = new ArrayList();
RetGroups =DsDomain.GetUserLocalGroup(null,"administrator",0);
//DsDomain.GetUserLocalGroup();
foreach(string str in RetGroups)
{
Console.WriteLine(str);
}