【问题标题】:netuseradd user already exists errornetuseradd 用户已存在错误
【发布时间】:2012-10-19 11:29:03
【问题描述】:

当我尝试在 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;

}

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;

}

【问题讨论】:

  • 为什么指定dwLevel等于零?它应等于 1。
  • 感谢您的回复,我最近才意识到。它解决了我的问题。

标签: c++ windows-7 createuser


【解决方案1】:

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

【讨论】:

  • 即使成功添加用户,我也无法在用户帐户下看到新用户。我想使用上面编写的代码创建的帐户登录。在一个问题中,有人建议将帐户添加到所需的组中。我也这样做了,但它对我不起作用。可能是什么问题?
  • forums.codeguru.com/archive/index.php/t-379648.html。希望它会有所帮助。
  • 感谢有用的链接。在“管理员”组下添加用户后,它可以工作。要检查帐户是否成功创建,可以在链接中检查“本地用户和组”。 installsetupconfig.com/win32programming/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-06-29
  • 2017-09-02
  • 2018-02-18
  • 1970-01-01
  • 2020-05-24
  • 1970-01-01
相关资源
最近更新 更多