Des*_*son 4 c++ winapi active-directory
如何设置传入参数 pUser 传递到此函数 CheckUserGroups(IADsUser *pUser) 中?我在另一篇文章上看到了函数,但他们没有详细解释它:Need toretrieve all groups a user所属... in C++
请指教。
HRESULT CheckUserGroups(IADsUser *pUser)
{
IADsMembers *pGroups;
HRESULT hr = S_OK;
hr = pUser->Groups(&pGroups);
pUser->Release();
if (FAILED(hr)) return hr;
IUnknown *pUnk;
hr = pGroups->get__NewEnum(&pUnk);
if (FAILED(hr)) return hr;
pGroups->Release();
IEnumVARIANT *pEnum;
hr = pUnk->QueryInterface(IID_IEnumVARIANT,(void**)&pEnum);
if (FAILED(hr)) return hr;
pUnk->Release();
// Enumerate.
BSTR bstr;
VARIANT var;
IADs *pADs;
ULONG lFetch;
IDispatch *pDisp;
VariantInit(&var);
hr = pEnum->Next(1, &var, &lFetch);
while(hr == S_OK)
{
if (lFetch == 1)
{
pDisp = V_DISPATCH(&var);
pDisp->QueryInterface(IID_IADs, (void**)&pADs);
pADs->get_Name(&bstr);
printf("Group belonged: %S\n",bstr);
SysFreeString(bstr);
pADs->Release();
}
VariantClear(&var);
pDisp=NULL;
hr = pEnum->Next(1, &var, &lFetch);
};
hr = pEnum->Release();
return S_OK;
}
Run Code Online (Sandbox Code Playgroud)
以下是创建和设置的示例IADsUser *pUser
(将“管理员”更改为您的用户名):
HRESULT hr = S_OK;
IADsUser *pUser;
_bstr_t bstr;
DWORD ll_len = 255;
char lbBuffer[255];
::GetComputerName(lbBuffer, &ll_len);
bstr = "WinNT://" + _bstr_t(lbBuffer) + "/" + _bstr_t("Administrator") + ",user";
hr = CoInitialize(NULL);
hr = ADsGetObject(bstr, IID_IADsUser, (void **)&pUser);
if (SUCCEEDED(hr))
{
hr = CheckUserGroups(pUser);
/*
hr = pUser->SetPassword(_bstr_t("123456"));
if (SUCCEEDED(hr))
{
CoUninitialize();
return TRUE;
}
*/
}
CoUninitialize();
Run Code Online (Sandbox Code Playgroud)
对于LDAP,您可以从本文档的示例中获得帮助,更改第一个参数ADsGetObject
。
归档时间: |
|
查看次数: |
1262 次 |
最近记录: |