C++ netuseradd用户已存在错误

C++ netuseradd用户已存在错误,c++,windows-7,createuser,C++,Windows 7,Createuser,当我尝试在windows 7中创建帐户程序时,收到“用户已存在”错误代码,尽管用户不存在。这个问题的原因可能是什么 int wmain(int argc, wchar_t *argv[]) { USER_INFO_1 ui; ui.usri1_name =L"test-PC"; ui.usri1_password = L"12"; ui.usri1_priv = USER_PRIV_USER; ui.usri1_home_dir = NULL; ui.usri1_comment = NULL;

当我尝试在windows 7中创建帐户程序时,收到“用户已存在”错误代码,尽管用户不存在。这个问题的原因可能是什么

int wmain(int argc, wchar_t *argv[])
{
USER_INFO_1 ui;
ui.usri1_name =L"test-PC";
ui.usri1_password = L"12";
ui.usri1_priv = USER_PRIV_USER;
ui.usri1_home_dir = NULL;
ui.usri1_comment = NULL;
ui.usri1_flags = UF_SCRIPT;
ui.usri1_script_path = NULL;

addUser(NULL, ui);

while(true){}
return 0;
}


}

dwLevel
参数不能为零,根据MSDN文档,它应该在1-4范围内。

为什么指定
dwLevel
等于零?它应该等于1。感谢您的回复。我最近意识到这一点。它解决了我的问题。即使成功添加了用户,我也无法在用户帐户下看到新用户。我想用上面写的代码创建的帐户登录。在一个问题中,有人建议将帐户添加到需要的组中。我也这样做过,但对我来说不起作用。有什么问题吗?看这个。希望这会有所帮助。感谢有用的链接。在我将用户添加到“administrators”组之后,它就可以工作了。检查是否可以在链接中检查成功创建的帐户“本地用户和组”。
int addUser(LPWSTR servername, USER_INFO_1 ui) {
DWORD dwLevel = 1;
DWORD dwError = 0;

// Call the NetUserAdd function, specifying level 1.
NET_API_STATUS nStatus = NetUserAdd(servername, dwLevel, (LPBYTE)&ui, &dwError);

// If the call succeeds, inform the user.
// Nerr_Success error code is 0 independant from nerr_base
if (nStatus == NERR_Success) {
    fwprintf(stderr, L"ADD: User %s has been successfully added on %s\n", "1", "2");
    return 1;
}
//Nerr_base should be given since userexists is calculated by adding nerr_base to error code
else if((NERR_BASE + nStatus) == NERR_UserExists) 
    fprintf(stderr, "ADD: Account already exists: %d\n", nStatus);
else if(NERR_BASE + nStatus == ERROR_ACCESS_DENIED)
    fprintf(stderr, "ADD: Access Denied: %d\n", nStatus);
else if(NERR_BASE + nStatus == NERR_PasswordTooShort)
    fprintf(stderr, "ADD: Password is too short: %d\n", nStatus);
else if(NERR_BASE + nStatus == NERR_PasswordTooLong)
    fprintf(stderr, "ADD: Password is too long: %d\n", nStatus);
else
    fprintf(stderr, "ADD: A system error has occurred2: %d\n", nStatus);

return 0;