0
我試圖使用網絡管理API將本地用戶添加到Windows。在Windows 7上運行(在域或工作組上)或Windows 2008 R2服務器在域上運行時,我沒有問題。但是,如果我在不在域中的Windows Server 2008 R2上運行此操作,則會出現錯誤。問題是返回的錯誤代碼是-1而不是文檔中給定的錯誤之一在工作組上運行Windows Server 2008 R2時NetUserAdd失敗
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
感謝
錯誤代碼不會在'm_dwLastError'中返回。它以'nStatus'返回。 –
我現在覺得很蠢....哈哈!我會誤讀文檔。事實證明,這是NERR_PasswordTooShort,因爲新的Windows 2008服務器上的最低密碼要求是8個字符。現在都在工作。非常感謝你。 – Richard