调用AddUser时出现持久性87错误

Persistent 87 error when calling AddUser

本文关键字:持久性 错误 AddUser 调用      更新时间:2023-10-16

我正在尝试使用NetAddUser添加本地用户,但不断收到错误代码-87,没有任何原因。据我所见,这段代码是根据MSDN编写的。这里可能出了什么问题?

#include "stdafx.h"
#include <windows.h>
#include <Lm.h>
#pragma comment(lib, "netapi32.lib")
int _tmain(int argc, _TCHAR* argv[])
{
    wchar_t wchLogin[256] = { 0 };
    wchar_t wchPassword[256] = { 0 };
    DWORD dwError = 0;
    USER_INFO_1 user_info;
    //ZeroMemory(&user_info, sizeof(USER_INFO_1));
    NET_API_STATUS err;
    wcscpy_s(wchLogin, L"test_user");
    wcscpy_s(wchPassword, L"123");

    user_info.usri1_name = wchLogin;
    user_info.usri1_password = wchPassword;
    user_info.usri1_priv = USER_PRIV_ADMIN;
    //user_info.usri1_script_path = L"";
    //user_info.usri1_flags = UF_SCRIPT;
    //user_info.usri1_home_dir = NULL;
    //user_info.usri1_comment = NULL;
    //user_info.usri1_flags = UF_SCRIPT | UF_WORKSTATION_TRUST_ACCOUNT;

    err = NetUserAdd(NULL, 1, (LPBYTE)&user_info, &dwError);
    if ( err != NERR_Success )
    {
        printf("Error adding user: %dn", err);
    }

    getchar();
    return 0;
}

谢谢!

答案在MSDN中,摘录如下:

usri1_priv

类型:DWORD

分配给usri1_name成员的权限级别调用NetUserAdd函数时,此成员必须是USER_PRIV_USER。什么时候调用NetUserSetInfo函数时,该成员必须是值由NetUserGetInfo函数或NetUserEnum函数返回。此成员可以是以下值之一。有关详细信息有关用户和组帐户权限,请参阅权限。