设为首页 加入收藏

TOP

C语言编写用户账户管理(一)
2014-11-23 21:38:07 来源: 作者: 【 】 浏览:10
Tags:语言 编写 用户 账户 管理

windows 用户管理函数

包含添加用户,删除用户,枚举用户,获取用户信息

1.添加用户函数 NetUserAdd

2.删除用户函数 NetUserDel

3.枚举用户函数 NetUserEunm

4.将一个用户加入一个本地的组 NetLocalGroupAddMembers

===============================================================

程序示例:

获取用户个数,枚举用户,添加管理员用户,删除用户


#define MAX_BUFF 1024*4

#include
#include
#include
#include
#pragma comment(lib, "netapi32.lib")

char Temp[MAX_BUFF] = {0};

int UserEnum();
int GetUserNum();

int wmain(int argc, wchar_t *argv[])
{
USER_INFO_1 ui;
DWORD dwLevel = 1;
DWORD dwError = 0;
NET_API_STATUS nStatus;
LPWSTR UserName = L"alex";

// get user number
int UserNum = GetUserNum();

// Enum all user
UserEnum();

ui.usri1_name = UserName;
ui.usri1_password = UserName;
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;

// add a user
nStatus = NetUserAdd(NULL,dwLevel,(LPBYTE)&ui,&dwError);
if (nStatus == NERR_Success)
fwprintf(stderr, L"User %s has been successfully added ",UserName);
else
fprintf(stderr, "A system error has occurred: %d ", nStatus);

// add alex user to Administrators group
LPWSTR szgroup = L"Administrators";
LOCALGROUP_MEMBERS_INFO_3 LGMInfo;
LGMInfo.lgrmi3_domainandname = UserName;

nStatus = NetLocalGroupAddMembers(NULL,szgroup,3,(LPBYTE)&LGMInfo,1);

// del a user
nStatus = NetUserDel(NULL,UserName);
if (nStatus == NERR_Success)
fwprintf(stderr, L"User %s has been successfully deleated ",UserName);
else
fprintf(stderr, "A system error has occurred: %d ", nStatus);

return 0;
}


int UserEnum()
{
LPUSER_INFO_3 pBuf = NULL;
LPUSER_INFO_3 pTmpBuf;
DWORD i;
DWORD dwLevel = 3;
DWORD dwPrefMaxLen = -1;
DWORD dwEntriesRead = 0;
DWORD dwTotalEntries = 0;
DWORD dwResumeHandle = 0;
LPTSTR pszServerName = NULL;
NET_API_STATUS nStatus;

do
{
nStatus = NetUserEnum(NULL,dwLevel,FILTER_NORMAL_ACCOUNT,(LPBYTE*)&pBuf,dwPrefMaxLen,&dwEntriesRead,&dwTotalEntries,&dwResumeHandle);
if ((nStatus == NERR_Success) || (nStatus == ERROR_MORE_DATA))
{
if ((pTmpBuf = pBuf) != NULL)
{
for (i = 0; (i < dwEntriesRead); i++)
{
if (pTmpBuf == NULL)
{
printf("An Access Violation Has Occurred ");
break;
}
sprintf(Temp,"%-10S ", pTmpBuf->usri3_name);
switch(pTmpBuf->usri3_priv)
{
case USER_PRIV_GUEST:
strcat(Temp,"(Guest) ");
break;
case USER_PRIV_USER:
strcat(Temp,"(User) ");
break;
case USER_PRIV_ADMIN:
strcat(Temp,"(Administrator) ");
break;
default:
strcat(Temp,"(Unknow) ");
break;
}
printf("%s",Temp);
pTmpBuf++;
}
}
printf(" List System Accounts Completed ");
}
else
printf("Fail To Enum NetUser ");
if (pBu

首页 上一页 1 2 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇服务函数编程 下一篇C语言网络通信编程

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: