NetUserEnum

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

Security Requirements

Only members of the Administrators or Account operators local group can successfully execute NetUserEnum at levels 1 and 2. No special group membership is required at level 0 or 10.

NET_API_STATUS NetUserEnum(

LPWSTR servername,  
DWORD level,  
DWORD filter,  
LPBYTE *bufptr,  
DWORD prefmaxlen,  
LPDWORD entriesread,  
LPDWORD totalentries,  
LPDWORD resume_handle  
);  

Parameters

servername

Pointer to a Unicode string containing the name of the remote server on which the function is to execute. A NULL pointer or string specifies the local computer.

level

Specifies one of the following values to return the level of information provided.

Value Meaning
0 The bufptr parameter points to an array of USER_INFO_0 structures.
1 The bufptr parameter points to an array of USER_INFO_1 structures.
2 The bufptr parameter points to an array of USER_INFO_2 structures.
3 The bufptr parameter points to an array of USER_INFO_3 structures.
10 The bufptr parameter points to an array of USER_INFO_10 structures.
11 The bufptr parameter points to an array of USER_INFO_11 structures.
12 The bufptr parameter points to an array of USER_INFO_20 structures.

filter

Specifies a filter of account types to enumerate. A value of zero implies all account types. Allowable values are:

Value Meaning
FILTER_TEMP_DUPLICATE_ACCOUNTS Enumerates local user account data on a domain controller.
FILTER_NORMAL_ACCOUNT Enumerates global user account data on a computer.
FILTER_INTERDOMAIN_TRUST_ACCOUNT Enumerates domain trust account data on a domain controller.
FILTER_WORKSTATION_TRUST_ACCOUNT Enumerates workstation or member server account data on a domain controller.
FILTER_SERVER_TRUST_ACCOUNT Enumerates domain controller account data on a domain controller.

bufptr

Pointer to the buffer in which the data set with the level parameter is stored. The returned buffer should be deallocated using the NetApiBufferFree function.

prefmaxlen

Preferred maximum length, in 8-bit bytes of returned data.

entriesread

Pointer to a DWORD that contains the actual enumerated element count.

totalentries

Pointer to a DWORD that contains the total number of entries that could have been enumerated from the current resume position. EXCEPTION: If the call is to a computer that is running LAN Manager 2.x, the totalentries parameter will always reflect the total number of entries in the database no matter where it is in the resume sequence.

resume_handle

Pointer to a DWORD that contains resume_handle, which is used to continue an existing user search. The handle should be zero on the first call and left unchanged for subsequent calls. If resume_handle is NULL, then no resume handle is stored.

Return Values

If the function is successful, it returns NERR_SUCCESS.

If the function fails, the return value is one of the following error codes.

Value Meaning
ERROR_ACCESS_DENIED The user does not have access to the requested information.
NERR_InvalidComputer The computer name is invalid.
ERROR_MORE_DATA More entries are available with subsequent calls.

Remarks

The NetUserEnum function returns the full set of USER_INFO_0 or USER_INFO_1 components. If level is set to 1, the password component of each data structure will be set to NULL to maintain password security. The NetUserEnum does not return all Windows NT system users. It returns only those users who have been added by the NetUserAdd function.

See Also

NetUserGetGroups, NetUserGetInfo, USER_INFO_0, USER_INFO_1, NetUserAdd