我正在尝试使用网络管理API将本地用户添加到Windows。我在windows7(无论是在域还是在工作组上)上运行时没有任何问题,或者在域上运行windows2008 R2服务器时也没有问题。然而,如果我在WindowsServer2008 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附带的服务器管理器工具,使用相同的信息创建相同的帐户
谢谢
发布于 2014-02-28 17:18:33
在查看了状态代码而不是m_dwLastError之后,发现它是NERR_PasswordTooShort,因为在新的Windows2008服务器上,最低密码要求是8个字符。
https://stackoverflow.com/questions/22077330
复制相似问题