J'ai posté plus tôt sur la façon de faire cela, et j'ai obtenu de bonnes réponses, et j'ai réussi à obtenir le code écrit basé sur l'exemple MSDN. Cependant, cela ne semble pas fonctionner correctement. Il imprime le message ERROR_ACCESS_DENIED, mais je ne sais pas pourquoi, car je le gère en tant qu'administrateur complet. Au départ, j'essayais de créer un USER_PRIV_ADMIN, mais le MSDN m'a dit qu'il ne pouvait utiliser que USER_PRIV_USER, mais malheureusement, aucun d'entre eux ne fonctionne. Je espère que quelqu'un peut repérer une erreur ou a une idée.C++ NetUserAdd() ne fonctionne pas?
Merci!
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;
}
}
}
Windows 7, il sera en cours d'exécution sur le serveur 2008 cependant. Je n'étais pas au courant de cela, je suppose que j'irai essayer là-bas à la place et voir si cela fonctionne réellement. Merci :) –