簡體   English   中英

NetUserAdd在工作組Windows Server 2008 R2上運行時失敗

[英]NetUserAdd failing when running on workgroup Windows Server 2008 R2

我正在嘗試使用網絡管理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附帶的服務器管理器工具來愉快地創建具有相同信息的相同帳戶。

謝謝

查看狀態代碼而不是m_dwLastError后,發現它是NERR_PasswordTooShort,因為在新的Windows 2008服務器上的最低密碼要求為8個字符。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM