2012-10-19 4 views
0

사용자가 존재하지 않지만 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; 

}

+0

왜 'dwLevel'을 0으로 지정합니까? 그것은 1과 같아야합니다. – Rost

+0

귀하의 회신에 감사드립니다. 나는 최근에 그것을 깨달았습니다. 그것은 내 문제를 해결합니다. – user

답변

0

dwLevel 파라미터는 NetUserAdd MSDN 설명서에 따라, 범위 1-4로한다, 제로가 될 수 없다.

+0

성공적으로 사용자를 추가해도 사용자 계정으로 새 사용자를 볼 수 없습니다. 위 코드로 작성한 계정으로 로그인하고 싶습니다. 하나의 질문에 필요한 그룹에 계정을 추가하는 것이 좋습니다. 나는 그 일을 또한했지만 그것은 나를 위해 작동하지 않습니다. 무엇이 문제 일 수 있습니까? – user

+0

다음을 참조하십시오 http://forums.codeguru.com/archive/index.php/t-379648.html. 희망이 도움이 될 것입니다. – Rost

+0

유용한 링크를 제공해 주셔서 감사합니다. "administrators"그룹 아래에 사용자를 추가 한 후에 작동합니다. 계정이 성공적으로 생성되었는지 또는 링크 에서처럼 "로컬 사용자 및 그룹"을 확인할 수 없는지 확인하려면 http://www.installsetupconfig.com/win32programming/networkmanagementapis16_30.html – user

관련 문제