Пытаюсь создать нового пользователя. Но код завершается с ошибкой A system error has occurred:5. Насколько я понял нужны права администратора. Или я не прав? Как их получить программно?
| Код | #include "stdafx.h" #include <stdio.h> #include <stdlib.h> #include <windows.h> #include <lm.h> #include <sstream> #include <string.h>
using namespace std;
#pragma comment(lib, "netapi32.lib")
int main(int argc, char** argv) { char compname[MAX_COMPUTERNAME_LENGTH+1]; char temp[MAX_COMPUTERNAME_LENGTH+2]; DWORD size = sizeof(compname)-1; int i,j,k,m; wchar_t servername[MAX_COMPUTERNAME_LENGTH+1]; wchar_t username[MAX_COMPUTERNAME_LENGTH+2]; wchar_t userpass[MAX_COMPUTERNAME_LENGTH+2];
GetComputerNameA(compname,&size);//получаем имя компа /* if( !GetComputerNameA(compname,&size) ) { printf( "Error of GetComputerNameA\n" ); return -1; } compname[MAX_COMPUTERNAME_LENGTH] = '\0'; */ printf("%s\n",compname); temp[0]='u';//добавляем букву 'u' к имени компа for(i=1,j=0; j<MAX_COMPUTERNAME_LENGTH; i++, j++) { temp[i] = compname[j]; } temp[i]= '\0'; printf ("%s\n",temp);//выводим имя которое будет присвоено пользователю //создаем пользователя USER_INFO_1 ui; DWORD dwLevel = 1; DWORD dwError = 0; NET_API_STATUS nStatus; //кoнвертируем имя пользователя из char в wchar_t MultiByteToWideChar(CP_ACP, 0, temp, MAX_COMPUTERNAME_LENGTH+2, username, MAX_COMPUTERNAME_LENGTH+2);
//кoнвертируем имя компа из char в wchar_t MultiByteToWideChar(CP_ACP, 0, compname, MAX_COMPUTERNAME_LENGTH+1, servername, MAX_COMPUTERNAME_LENGTH+1);
//устанавливаем пароль пользователю for(k=0,m=1; m<MAX_COMPUTERNAME_LENGTH; k++, m++) { userpass[k] = compname[m]; }
ui.usri1_name = username; ui.usri1_password = userpass; 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; //добавляем пользователя nStatus = NetUserAdd(servername, dwLevel,(LPBYTE)&ui,&dwError);
if (nStatus == NERR_Success) fwprintf(stderr, L"User %s has been successfully added on %s\n", userpass, username); else fprintf(stderr, "A system error has occurred: %d\n", nStatus);
system("pause"); return 0; }
|
|