You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

NetUseAdd返回1326错误:远程域连接用户名传递异常排查

问题分析与解决

核心错误:误用结构导致认证参数失效

你的代码存在关键问题:NetUseAdd函数用于建立网络连接时,需要传入USE_INFO_*系列结构,而非用于用户账户管理的USER_INFO_1结构。错误的结构直接导致指定的用户名、密码无法被正确解析,系统 fallback 到本地用户身份发起认证,最终触发1326错误。

修正后的实现代码

使用USE_INFO_2结构来正确传递远程连接的认证信息,同时修正参数类型与调用逻辑:

bool net::Establish(const wchar_t* remoteUNC, const wchar_t* domain, const wchar_t* user, const wchar_t* password) {
    DWORD ret;

    USE_INFO_2 useInfo = {0};
    useInfo.ui2_remote = (LPWSTR)remoteUNC;
    useInfo.ui2_username = (LPWSTR)user;
    useInfo.ui2_domainname = (LPWSTR)domain;
    useInfo.ui2_password = (LPWSTR)password;
    useInfo.ui2_asg_type = USE_WILDCARD; // 适配任意共享资源类型
    useInfo.ui2_usecount = 1;

    ret = NetUseAdd(NULL, 2, (LPBYTE)&useInfo, NULL);
    if (ret != NERR_Success) {
#ifdef DEBUG
        wprintf(L"Error: NetUseAdd: %d\n", ret);
#endif
        return false;
    }
    return true;
}

调用方式调整

调用时需明确传入域信息(域用户场景),远程UNC路径保持正确格式:

// 域用户传入域名,本地用户可将domain设为L""或远程机器名
net::Establish(L"\\\\192.168.1.10", L"YourDomain", L"user", L"password");

额外注意事项

  • 确保所有字符串参数为宽字符类型(wchar_t),与NetUseAdd的Unicode版本兼容,避免编码混合导致的参数错误。
  • 若仍出现错误,可调用NetApiBufferFree释放资源,并通过FormatMessage获取详细错误描述辅助排查。
  • 执行程序的本地用户需具备建立网络连接的权限,远程机器需允许目标用户访问共享资源。

内容的提问来源于stack exchange,提问作者zbx0310

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 08:42:56