我想添加一批用户,一个一个的添加太累,如何编程添加(NT/2000)

解决方案 »

  1.   

    使用adsi是最简单的办法:
    下载sdk安装之后,请察看sample\start下的例子,比较简单,还有一个adsi25.chm是帮助文件,告诉你怎么用download:
    http://www.microsoft.com/NTWorkstation/downloads/Other/ADSI25.aspIntel Version (English Language) (http://download.microsoft.com/download/winntwks40/Install/2.5/nt4/en-us/ads.exe)
    ADSI 2.5 SDK (English Language) (http://download.microsoft.com/download/winntwks40/sdk/2.5/nt4/en-us/sdk.exe)
      

  2.   

    DWORD CNetUsers::Add(CString strServerName, CString strUserName, CString strPassword)
    {
    USER_INFO_1 user_info;
    LPWSTR lpszUserName = (LPWSTR)strUserName.AllocSysString();
    LPWSTR lpszPassword = (LPWSTR)strPassword.AllocSysString();
    LPWSTR lpszServerName = (LPWSTR)strServerName.AllocSysString();
    NET_API_STATUS nStatus = 0;
    DWORD parm_err = 0;
    DWORD dwLevel = 1; // Set up the USER_INFO_1 structure. 
        user_info.usri1_name = lpszUserName;
        user_info.usri1_password = lpszPassword;
        user_info.usri1_priv = USER_PRIV_USER;
        user_info.usri1_home_dir = (LPWSTR)"";
        user_info.usri1_comment = NULL;
        user_info.usri1_flags = UF_SCRIPT;
        user_info.usri1_script_path = (LPWSTR)""; if (strServerName.IsEmpty())
    {
    nStatus = NetUserAdd(NULL,
    dwLevel,
    (LPBYTE)&user_info,
    &parm_err);
    }
    else
    {
    nStatus = NetUserAdd(lpszServerName,
    dwLevel,
    (LPBYTE)&user_info,
    &parm_err);
    }    if ( nStatus != NERR_Success  )
        {
    if(m_bShowMessage == TRUE)
    {
    DisplayErrorText(nStatus);
    }        
        }
    else
    {
    CString csTemp;
    csTemp.Format("已经成功添加帐号%s。",strUserName);
    AfxMessageBox(csTemp);
    } if(nStatus == NERR_UserExists)
    nStatus = NERR_Success; if(nStatus == NERR_Success)
    m_strUserName = strUserName;
        
    return nStatus;
    }
      

  3.   

    同意楼上的用adsi接口(无须sdk)adsi25.chm
      

  4.   

    #define UNICODE 1
    #include <windows.h>
    #include <lmcons.h>
    #include <lmaccess.h>
    #include <lmerr.h>
    #include <lmapibuf.h>
    #include <stdio.h>
    #include <stdlib.h>int _CRTAPI1 main( int cArgs, char *pArgs[] );NET_API_STATUS NetSample( LPWSTR lpszDomain,
                              LPWSTR lpszUser,
                              LPWSTR lpszPassword,
                              LPWSTR lpszLocalGroup )
    {    USER_INFO_1               user_info;
        LOCALGROUP_INFO_1         localgroup_info;
        LOCALGROUP_MEMBERS_INFO_3 localgroup_members;
        LPWSTR                    lpszPrimaryDC = NULL;
        NET_API_STATUS            err = 0;
        DWORD                     parm_err = 0;/* First get the name of the Primary Domain Controller. */
    /* Be sure to free the returned buffer */    err = NetGetDCName( NULL,                        /* Local Machine */
                            lpszDomain,                  /* Domain Name */
                            (LPBYTE *)&lpszPrimaryDC );  /* returned PDC */    if ( err != 0 )
        {
            printf( "Error getting DC name: %d\n", err );
            return( err );
        }
    /* Set up the USER_INFO_1 struct */    user_info.usri1_name = lpszUser;
        user_info.usri1_password = lpszPassword;
        user_info.usri1_priv = USER_PRIV_USER;
        user_info.usri1_home_dir = TEXT("");
        user_info.usri1_comment = TEXT("Sample User");
        user_info.usri1_flags = UF_SCRIPT;
        user_info.usri1_script_path = TEXT("");    err = NetUserAdd( lpszPrimaryDC,       /* PDC name */
                          1,                   /* level */
                          (LPBYTE)&user_info,  /* input buffer */
                          &parm_err );         /* parameter in error */    switch ( err )
        {
        case 0:
            printf("user successfully created.\n");
            break;
        case NERR_UserExists:
            printf("user already exists.\n");
            err = 0;
            break;
        case ERROR_INVALID_PARAMETER:
            printf("Invalid Parameter Error adding user: Parameter Index = %d\n",
                    parm_err);
            NetApiBufferFree( lpszPrimaryDC );
            return( err );
        default:
            printf("Error adding user: %d\n", err);
            NetApiBufferFree( lpszPrimaryDC );
            return( err );
        }/* Set up the LOCALGROUP_INFO_1 struct */    localgroup_info.lgrpi1_name = lpszLocalGroup;
        localgroup_info.lgrpi1_comment = TEXT("Sample Local group.");    err = NetLocalGroupAdd( lpszPrimaryDC,              /* PDC name */
                                1,                          /* level */
                                (LPBYTE)&localgroup_info,   /* input buffer */
                                &parm_err );                /* parm in error */    switch ( err )
        {
        case 0:
            printf("Local Group successfully created.\n");
            break;
        case ERROR_ALIAS_EXISTS:
            printf("Local Group already exists.\n");
            err = 0;
            break;
        case ERROR_INVALID_PARAMETER:
            printf("Invalid Parameter Error adding Local Group: Parameter Index = %d\n",
                    err, parm_err);
            NetApiBufferFree( lpszPrimaryDC );
            return( err );
        default:
            printf("Error adding Local Group: %d\n", err);
            NetApiBufferFree( lpszPrimaryDC );
            return( err );
        }/* Now add the user to the local group */    localgroup_members.lgrmi3_domainandname = lpszUser;    err = NetLocalGroupAddMembers( lpszPrimaryDC,        /* PDC name */
                                       lpszLocalGroup,       /* group name */
                                       3,                    /* passing in name */
                                       (LPBYTE)&localgroup_members, /* Buffer */
                                       1 );                  /* count passed in */    switch ( err )
        {
        case 0:
            printf("User successfully added to Local Group.\n");
            break;
        case ERROR_MEMBER_IN_ALIAS:
            printf("User already in Local Group.\n");
            err = 0;
            break;
        default:
            printf("Error adding User to Local Group: %d\n", err);
            break;
        }    NetApiBufferFree( lpszPrimaryDC );
        return( err );}int _CRTAPI1 main( int    cArgs,
                       char * pArgs[] )
    {
        NET_API_STATUS err = 0;    printf( "Calling NetSample.\n" );
        err = NetSample( TEXT("SampleDomain"),
                         TEXT("SampleUser"),
                         TEXT("SamplePswd"),
                         TEXT("SampleLG") );
        printf( "NetSample returned %d\n", err );
        return( 0 );
    }================================================================CSDN 论坛助手 Ver 1.0 B0402提供下载。 改进了很多,功能完备!★  浏览帖子速度极快![建议系统使用ie5.5以上]。 ★  多种帖子实现界面。 
    ★  保存帖子到本地[html格式]★  监视您关注帖子的回复更新。
    ★  可以直接发贴、回复帖子★  采用XML接口,可以一次性显示4页帖子,同时支持自定义每次显示帖子数量。可以浏览历史记录! 
    ★  支持在线检测程序升级情况,可及时获得程序更新的信息。★★ 签名  ●  
         可以在您的每个帖子的后面自动加上一个自己设计的签名哟。Http://www.ChinaOK.net/csdn/csdn.zip
    Http://www.C