Ранее я писал о том, как это сделать, и получил несколько хороших ответов, и мне удалось получить код, написанный на основе примера MSDN. Тем не менее, он не работает должным образом. Он распечатывает сообщение ERROR_ACCESS_DENIED, но я не уверен почему, поскольку я работаю как полный администратор. Сначала я пытался создать USER_PRIV_ADMIN, но MSDN сказал, что он может использовать только USER_PRIV_USER, но, к сожалению, ни одна из них не работает. Я надеюсь, что кто-то может заметить ошибку или иметь идею.
Спасибо!
void AddRDPUser()
{
USER_INFO_1 ui;
DWORD dwLevel = 1;
DWORD dwError = 0;
NET_API_STATUS nStatus;
ui.usri1_name = L"DummyUserAccount";
ui.usri1_password = L"a2cDz3rQpG8";
//ignored by NetUserAdd
//ui.usri1_password_age = -1;
ui.usri1_priv = USER_PRIV_USER; //USER_PRIV_ADMIN;
ui.usri1_home_dir = NULL;
ui.usri1_comment = NULL;
ui.usri1_flags = UF_SCRIPT;
ui.usri1_script_path = NULL;
nStatus = NetUserAdd(NULL, dwLevel, (LPBYTE)&ui, &dwError);
switch (nStatus)
{
case NERR_Success:
{
Msg("SUCCESS!\n");
break;
}
case NERR_InvalidComputer:
{
fprintf(stderr, "A system error has occurred: NERR_InvalidComputer\n");
break;
}
case NERR_NotPrimary:
{
fprintf(stderr, "A system error has occurred: NERR_NotPrimary\n");
break;
}
case NERR_GroupExists:
{
fprintf(stderr, "A system error has occurred: NERR_GroupExists\n");
break;
}
case NERR_UserExists:
{
fprintf(stderr, "A system error has occurred: NERR_UserExists\n");
break;
}
case NERR_PasswordTooShort:
{
fprintf(stderr, "A system error has occurred: NERR_PasswordTooShort\n");
break;
}
case ERROR_ACCESS_DENIED:
{
fprintf(stderr, "A system error has occurred: ERROR_ACCESS_DENIED\n");
break;
}
}
}