Неполучается создать пользователя

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by _nic, 6 Jan 2009.

  1. _nic

    _nic Elder - Старейшина

    Joined:
    5 May 2006
    Messages:
    651
    Likes Received:
    54
    Reputations:
    3
    Вот нашол тут http://borland.xportal.ru/forum/viewtopic.php?t=12828&start=5
    Такой код:
    Code:
    PWCHAR   domain = NULL;
       PSID   psid = NULL;
    
       do {
    
    	  //Cоздаем новый аккаунт на лоакльной машине
    	  USER_INFO_1 ui;
    	  DWORD dwLevel = 1;
    	  DWORD dwError = 0;
    
    	  ui.usri1_name = L"user1";
    	  ui.usri1_password = L"1111111";
    	  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;
    
    	  NET_API_STATUS   nStatus = NetUserAdd(NULL,
    			dwLevel,
    			(LPBYTE)&ui,
    			&dwError);
    
    	  if (  nStatus != NERR_Success )
    		 break;
    
    	  //Определяем SID созданного аккаунта
    	  DWORD         sid_size = 0;
    	  DWORD         domain_size = 0;
    	  SID_NAME_USE   snu;
    
    	  //Первый вызов возвратит размер буферов
    	  LookupAccountNameW( NULL, L"user1", NULL, &sid_size,
    		 NULL, &domain_size, &snu );
    
          if ( !( domain = (PWCHAR)malloc( 2*(domain_size + 1 ) ) ) ) 
             break; 
    
          if ( !(   psid = malloc( sid_size ) ) ) 
    		 break;
    
          if ( !LookupAccountNameW( NULL, L"user1", psid, &sid_size, 
             domain, &domain_size, &snu )  ) 
                break; 
    
          //Добавляем созданного пользователя в локальную группу администраторов       
          LOCALGROUP_MEMBERS_INFO_0 lmi0 = { psid }; 
    
          nStatus = NetLocalGroupAddMembers( NULL, 
             L"Administrators", 
             0, 
    		 (LPBYTE)&lmi0,
    		 1 );
    
       } while ( 0 );
    
       if ( domain )
    	  free( domain );
    
       if ( psid )
    	  free( psid );
    
    Только вот он неработает :( Новый пользователь непоявляется.У кого какие мысли по чему?Может процессу прав нехватает?
    ___________________________________________
    GetLastError возвращяет ERROR_IO_PENDING Я вообще запутался :(
     
    #1 _nic, 6 Jan 2009
    Last edited: 7 Jan 2009