我正在尝试使用网络管理API将本地用户添加到Windows。在域上运行Windows 7(域或工作组)或Windows 2008 R2服务器时,我没有遇到任何问题。但是,如果我在不在域上的Windows Server 2008 R2上运行此操作,则会出现错误。问题是返回的错误代码是-1而不是文档中给定的错误之一
bool CLocalUsers::AddUser(LPCTSTR lpszUserName, LPCTSTR lpszPassword)
{
// Clear error code
m_dwLastError = 0;
USER_INFO_1 ui;
ui.usri1_name = (LPTSTR)(LPCTSTR)lpszUserName;
ui.usri1_priv = USER_PRIV_USER;
ui.usri1_home_dir = NULL;
ui.usri1_comment = NULL;
ui.usri1_flags = UF_SCRIPT | UF_DONT_EXPIRE_PASSWD;
ui.usri1_script_path = NULL;
// Point to a zero character password if null
if(lpszPassword == NULL)
{
lpszPassword = _T("");
ui.usri1_flags |= UF_PASSWD_NOTREQD;
}
ui.usri1_password = (LPTSTR)(LPCTSTR)lpszPassword;
// Add the user
NET_API_STATUS nStatus = ::NetUserAdd(NULL, 1, (LPBYTE)&ui, &m_dwLastError);
if(nStatus != NERR_Success)
{
// DEBUG ONLY
CString szErrorMsg;
szErrorMsg.Format(_T("Error code %d"), m_dwLastError);
::AfxMessageBox(szErrorMsg, MB_OK);
// DEBUG ONLY
return false;
}
return true;
}
它在管理员权限下运行。我可以在没有任何问题的情况下调用其他网络功能(NetUserGetInfo,NetLocalGroupAddMembers)。
我已尝试使用不同的密码大小,但我可以使用Windows 2008附带的服务器管理器工具以相同的信息创建相同的帐户
由于
答案 0 :(得分:1)
在查看状态代码而不是m_dwLastError后,结果是NERR_PasswordTooShort,因为新的Windows 2008服务器上的最低密码要求是8个字符。