dedecms织梦内容管理系统  
 
首页 | 方舟产品 | 系统优化 | 硬件系统 | 软件系统 | 网络系统 | 无盘网络 | 软件下载 | 杀毒防黑 | 专题 | 会员中心 | 方舟论坛
  当前位置:方舟系统站>系统优化>win 2003优化>文章内容
Windows 2000用户管理--活动目录实例
来源: 作者: 发布时间:2007-05-10  



在实际的应用中,如我们要做一个服务器对终端的控制软件,常需要管理用户,当然NT,W2K提供了完善的用户管理模式,但有时我们并不希望从管理工具中去找启动用户管理,这样管理起来非常麻烦,我们常常希望能从我们的软件上就可以管理NT,W2K的用户,这样对一些对操作系统不是很熟练的用户来说是非常必要的。就最近就有人要求我为其写一个终端管理软件,我刚开始也觉得没有什么必要,但经他仔细说来觉得还是有必要的,他是用PB的,他说感觉好象很难做到,所以我只好为他编写了一个DLL,其中带有增加用户,删除用户,修改密码,增加用户到组,从组中删除,获得用户列表等等,由于篇幅太长,不便于读者阅读,故省去了一些函数,如果需要请与本人联系。 gxtlib@21cn.com

下面的函数主要利用了NT,W2K的活动目录服务一些组件接口,如IADsContainer 容器,IADs,IADsUser接口等。

1、删除一个用户(从本机器上)

BOOL __stdcall DeleteUser(char *username)
{
HRESULT hr;
IADsContainer *pContainer=NULL;
_bstr_t bstr;
DWORD ll_len=255;
char lbBuffer[255];
::GetComputerName(lbBuffer,&ll_len);
bstr="WinNT://"+_bstr_t(lbBuffer)+","+_bstr_t("computer");
// 始化公寓线程
hr=CoInitialize(NULL);
hr= ADsGetObject(bstr,IID_IADsContainer,(void **)&pContainer);
pContainer->Delete(L"user",_bstr_t(username));
pContainer->Release();

CoUninitialize();
return FALSE;
}

2、增加一个用户

BOOL __stdcall AddUser(char *username,char *fullname,char *description)
{
HRESULT hr;
IADsContainer *pContainer=NULL;
IADs *pADs=NULL;
IDispatch *pDisp=NULL;

_bstr_t bstr;
DWORD ll_len=255;
char lbBuffer[255];
::GetComputerName(lbBuffer,&ll_len);

bstr="WinNT://"+_bstr_t(lbBuffer)+","+_bstr_t("computer");

// 始化公寓线程
hr=CoInitialize(NULL);
hr= ADsGetObject(bstr,IID_IADsContainer,(void **)&pContainer);
hr=pContainer->Create(L"user",_bstr_t(username),&pDisp);

pContainer->Release();
if( !SUCCEEDED(hr) ) { return hr; }

hr = pDisp->QueryInterface(IID_IADs, (void**) &pADs );
pDisp->Release();
if ( !SUCCEEDED(hr) ) { return 0;}
VARIANT var;
VariantInit(&var);
var.vt=VT_BSTR;
var.bstrVal=_bstr_t(fullname);

pADs->Put(L"FullName",var);
VariantClear(&var);

var.vt=VT_BSTR;
var.bstrVal=_bstr_t(description);

pADs->Put(L"Description",var);
VariantClear(&var);

hr=pADs->SetInfo();
hr=pADs->Release();

CoUninitialize();
return FALSE;
}

3、设置用户密码

BOOL __stdcall SetUserPwd(char *username,char *pwd)
{
HRESULT hr;
IADsUser *pUser;
_bstr_t bstr;
DWORD ll_len=255;
char lbBuffer[255];
::GetComputerName(lbBuffer,&ll_len);

bstr="WinNT://"+_bstr_t(lbBuffer)+"/"+_bstr_t(username)+",user";

file://初 始化公寓线程
hr=CoInitialize(NULL);
hr= ADsGetObject(bstr,IID_IADsUser,(void **)&pUser);
if (SUCCEEDED(hr))
{
hr=pUser->SetPassword(_bstr_t(pwd));

if(SUCCEEDED(hr))
{
CoUninitialize();
return TRUE;
}
}
CoUninitialize();

return FALSE;
}



 
[收藏] [推荐] [评论(0条)] [返回顶部] [打印本页] [关闭窗口]  
用户名: 新注册) 密码: 匿名评论
评论内容:(不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规。
 §最新评论:
  热点文章
·升级windows 2003 sp2时提示产品
·win 2003最新优化大全
·win2003设置受限用户有关机权限
·windows 2003 优化大全
·Windows 2003 Server提速优化
·Windows2003安全事件ID列表
·Windows 2003 服务器管理经验
·Delphi深度探索-活动目录开发
·windows 2003 简化
·windows 2003在线升级补丁
·设置win2003 自动登录
·突破IIS连接数限制,Windows 200
  相关文章
·windows 2000中的活动目录
·Windows2003中对域控制器重命名
·windows 2003 简化
·Windows 2003 Server提速优化
·升级windows 2003 sp2时提示产品
·Windows Server 2003中文版
·安装Windows 2003企业版
·如何配置和管理WinXP/2003系统服
·Win2003中IE安全区域的设置技巧
·Windows Server 2003实用技巧
·windows 2003 优化大全
·win 2003最新优化大全
  主题推广
方舟网络 版权所有|关于本站|隐私保护|