NetUserAdd

The NetUserAdd function adds a user account and assigns a password and privilege level.

Security Requirements

Only members of the Administrators or Account Operators local group can successfully execute NetUserAdd. Only members of the Administrators local group can add an Administrators privilege account.

NET_API_STATUS NetUserAdd(

LPWSTR servername,  
DWORD level,  
LPBYTE buf,  
LPDWORD parm_err  
);  

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 set the level of information provided.

Value Meaning
1 The buf parameter points to a USER_INFO_1 structure.
2 The buf parameter points to a USER_INFO_2 structure.
3 The buf parameter points to a USER_INFO_3 structure.

buf

Pointer to the buffer in which the data set with the level parameter is stored.

parm_err

Optional pointer to a DWORD that contains the index of the first parameter that causes ERROR_INVALID_PARAMETER. If NULL, the parameter is not returned on error.

Return Values

If the function returns account information, the return value is 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 Thiecomputer name is invalid.
NERR_NotPrimary The operation is allowed only on the primary domain controller of the domain.
NERR_GroupExists The group already exists.
NERR_UserExists The user account already exists.
NERR_PasswordTooShort The password is shorter than required.

Remarks

Server users must use a system in which the server creates a WINDOWS NT system account for the new user. The creation of this account is controlled by several parameters in the server's LANMAN.INI file.

If the newly added server user name already exists as a Windows NT system user, the useril_home_dir member of the USER_INFO_1 structure is ignored. The NetUserAdd function supports USER_INFO_1 and USER_INFO_2 structures. Using members of USER_INFO_1 initializes default values in USER_INFO_2 and USER_INFO_3 structures.

Subsequent NetUserSetInfo calls can change the default values. The following are possible default values.

Member Default Value
usriX_auth_flags None (0)
usriX_full_name usri1_name
usriX_usr_comment None (null string)
usriX_parms None (null string)
usriX_workstations All (null string)
usriX_acct_expires Never (TIMEQ_FOREVER)
usriX_max_storage Unlimited (USER_MAXSTORAGE_UNLIMITED)
usriX_logon_hours Logon allowed at any time (each element 0xFF; all bits set to 1)
usriX_logon_server Any domain controller (\\*)
usriX_country_code Current (country_code on the server
usriX_code_page 0

See Also

NetUserEnum, NetUserSetInfo, NetUserDel