Windows XP Windows 7 Windows 2003 Windows Vista Windows教程綜合 Linux 系統教程
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟件教程
 Windows教程網 >> Windows Server系統教程 >> Windows Server教程 >> Windows 2000用戶管理--活動目錄實際示例

Windows 2000用戶管理--活動目錄實際示例

日期:2017/1/24 11:02:29      編輯:Windows Server教程


在實際的應用中,如我們要做一個服務器對終端的控制軟件,常需要管理用戶,當然NT,W2K提供了完善的用戶管理模式,但有時我們並不希望從管理工具中去找啟動用戶管理,這樣管理起來非常麻煩,我們常常希望能從我們的軟件上就可以管理NT,W2K的用戶,這樣對一些對操作系統不是很熟練的用戶來說是非常必要的。就最近就有人要求我為其寫一個終端管理軟件,我剛開始也覺得沒有什麼必要,但經他仔細說來覺得還是有必要的,他是用PB的,他說感覺好象很難做到,所以我只好為他編寫了一個DLL,其中帶有增加用戶,刪除用戶,修改密碼,增加用戶到組,從組中刪除,獲得用戶列表等等,由於篇幅太長,不便於讀者閱讀,故省去了一些函數,如果需要請與本人聯系。 [email protected]

下面的函數主要利用了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;
}

 
Copyright © Windows教程網 All Rights Reserved