NetUserEnum (netapi32)
Last changed: -108.168.5.220

.
Summary
The NetUserEnum function provides information about all user accounts on a server.

C# Signature:

[DllImport("Netapi32.dll")]

extern static int NetUserEnum([MarshalAs(UnmanagedType.LPWStr)]

string servername,

int level,

int filter,

out IntPtr bufptr,

int prefmaxlen,

out int entriesread,

out int totalentries,

out int resume_handle);

VB Signature:

    Public Declare Function NetUserEnum Lib "Netapi32.dll" ( _
    <MarshalAs(UnmanagedType.LPWStr)> ByVal servername As String, _
    ByVal level As Integer, _
    ByVal filter As Integer, _
    ByRef bufptr As IntPtr, _
    ByVal prefmaxlen As Integer, _
    ByRef entriesread As Integer, _
    ByRef totalentries As Integer, _
    ByRef resume_handle As Integer) As Integer

User-Defined Types:

None.

Notes:

None.

Tips & Tricks:

Please add some!

Sample Code:

public static Hashtable GetUsersListWithNETAPI(string strServerName)

        {
            //with struct USER_INFO_1
            ArrayList users = new ArrayList();
            Hashtable userlist=new Hashtable();
            int EntriesRead;
            int TotalEntries;
            int Resume;
            IntPtr bufPtr;
            string strServer;
            if (strServerName.Trim()!="")
            {
                strServer=@"\\"+strServerName;
            }
            else
            {
                strServer=strServerName;
            }
            try
            {
                NetUserEnum(strServer, 2, 2, out bufPtr, -1, out EntriesRead, out TotalEntries, out Resume);
                if(EntriesRead> 0)
                {
                    USER_INFO_2[] Users = new USER_INFO_2[EntriesRead];
                    IntPtr iter = bufPtr;
                    for(int i=0; i < EntriesRead; i++)
                    {
                        Users[i] = (USER_INFO_2)Marshal.PtrToStructure(iter, typeof(USER_INFO_2));
                        iter = (IntPtr)((int)iter + Marshal.SizeOf(typeof(USER_INFO_2)));

                        //users.Add(Users[i].usr_name);
                        userlist.Add(Users[i].usr_name,Users[i].usri2_full_name);

                    }
                    NetApiBufferFree(bufPtr);

                }
            }
            catch(Exception Ex)
            {
                Console.WriteLine(Ex.Message);
                return null;
            }
            return userlist;
        }
    }

}

Alternative Managed API:

Do you know one? Please contribute it!

Documentation
NetUserEnum on MSDN