사용자가 존재하지 않지만 Windows 7에서 계정 programmaticaly를 만들려고하면 사용자가 이미 오류 코드를 수신합니다. 이 문제의 원인은 무엇입니까?netuseradd 사용자가 이미 존재 함 오류
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'을 0으로 지정합니까? 그것은 1과 같아야합니다. – Rost
귀하의 회신에 감사드립니다. 나는 최근에 그것을 깨달았습니다. 그것은 내 문제를 해결합니다. – user