在NT/2000下如何编程增加用户

super_xxx 2002-03-22 05:54:30
加精
我想添加一批用户,一个一个的添加太累,如何编程添加(NT/2000)
...全文
97 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
mfkzj 2002-06-10
  • 打赏
  • 举报
回复
#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
king_koo 2002-03-25
  • 打赏
  • 举报
回复
同意楼上的

用adsi接口(无须sdk)

adsi25.chm
shenhai79 2002-03-25
  • 打赏
  • 举报
回复
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;
}
super_xxx 2002-03-25
  • 打赏
  • 举报
回复
你有工程文件吗,给我一份吧,我下载的东西安装不上
strip 2002-03-22
  • 打赏
  • 举报
回复
使用adsi是最简单的办法:


下载sdk安装之后,请察看sample\start下的例子,比较简单,还有一个adsi25.chm是帮助文件,告诉你怎么用

download:
http://www.microsoft.com/NTWorkstation/downloads/Other/ADSI25.asp

Intel 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)

16,551

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧