首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >NetUserAdd -权限问题,不正确的参数

NetUserAdd -权限问题,不正确的参数
EN

Stack Overflow用户
提问于 2015-12-26 21:01:28
回答 1查看 1K关注 0票数 1

我使用NetUserAdd来添加一个新的管理员。但我收到了一个我搞不懂的错误。

从失败方法返回的错误是:

代码语言:javascript
运行
复制
NET_API_STATUS: 87
PARAM_ERR: 5

NET_API_STATUS有一个值87,即ERROR_INVALID_PARAMETER。我相信5是参数5,这就是我感到困惑的地方。什么参数?我的结构与文档中的结构相同,那么这个错误在哪里呢?

这是它失败的方法。

代码语言:javascript
运行
复制
bool CreateAdminUser(wchar_t *username, wchar_t *password)
{
    _USER_INFO_1 ui;
    DWORD dwLevel = 1;
    DWORD dwError = 0;
    NET_API_STATUS = nStatus;

    ui.usri1_name = username;
    ui.usri1_password = password;
    ui.usri1_priv = USER_PRIV_ADMIN;
    ui.usri1_home_dir = NULL;
    ui.usri1_comment = NULL;
    ui.usri1_flags = UF_SCRIPT;
    ui.usri1_script_path = NULL;

    nStatus = NetUserAdd(NULL, dwLevel, (LPBYTE) &ui, &dwError);

    if(nStatus != NERR_Success)
    {
        printf("NET_API_STATUS: %s\nPARAM_ERR: %d\n", nStatus, dwError);
        return false;
    }

    return true;
}

我正在运行可执行文件作为管理,通过运行作为。

编辑

我把USER_PRIV_ADMIN改成了USER_PRIV_USER,它成功了。但是为什么我不能创建管理员用户呢?我有管理员权限。我已经使用Run As进行了纠正,并通过UAC请求权限,我已经将其包括在声明中。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-12-27 21:09:42

useri1.priv成员是只读的.(我怀疑它的存在只是为了与早期版本的基于DOS的局域网管理器兼容,我认为它确实是通过帐户上的标志而不是组成员来确定管理权限的。)

无论如何,它是只读的这一事实是1

分配给usri1_name成员的权限级别。当您调用NetUserAdd函数时,这个成员必须是USER_PRIV_USER。调用NetUserSetInfo函数时,该成员必须是NetUserGetInfo函数或NetUserEnum函数返回的值。

创建新管理用户的正确方法是首先创建没有管理权限的用户,然后调用NetLocalGroupAddMembers将用户添加到Administrators组。(或者在域环境中,您可以使用NetGroupAddUser

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34475203

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档