IADsGroup::IsMember 方法 (iads.h)
IADsGroup::IsMember 方法确定目录服务对象是否是该组的直接成员。 此方法不验证任何嵌套组中的成员身份。
语法
HRESULT IsMember(
BSTR bstrMember,
[out] VARIANT_BOOL *bMember
);
参数
bstrMember
包含用于验证成员身份的目录服务对象的 ADsPath。 此 ADsPath 必须使用用于绑定到组的同一 ADSI 提供程序。 例如,如果组是使用 LDAP 提供程序绑定到的,则此 ADsPath 还必须使用 LDAP 提供程序。
[out] bMember
指向 VARIANT_BOOL 值的指针 ,如果对象 是组的直接成员或VARIANT_FALSE,则该值接收 VARIANT_TRUE 。
返回值
此方法支持标准返回值,包括 S_OK。 有关详细信息,请参阅 ADSI 错误代码。
注解
尽管可以通过 WinNT 提供程序使用成员 SID 向组添加或删除安全主体,但如果成员通过 WinNT 提供程序属于组, 则 IADsGroup.IsMember 方法不支持使用 SID ADsPath 进行验证。
仅当组和对象位于同一域中时, IADsGroup::IsMember 方法才能正常工作。 如果对象与组位于不同的域中, 则 IADsGroup::IsMember 将始终返回 VARIANT_FALSE。
示例
下面的代码示例将“jeffsmith”用户添加到“Fabrikam”域上的“Administrators”组,然后报告该用户现在是该组的成员。
Dim grp As IADsGroup
On Error GoTo Cleanup
Set grp = GetObject("WinNT://Microsoft/Administrators")
grp.Add ("WinNT://Fabrikam/jeffsmith")
Debug.Print grp.IsMember("WinNT://Fabrikam/jeffsmith ") ' Should be TRUE.
Cleanup:
If (Err.Number<>0) Then
MsgBox("An error has occurred. " & Err.Number)
End If
Set grp = Nothing
下面的代码示例验证用户是否属于组,然后再将其添加到组。
IADsGroup *pGroup = NULL;
HRESULT hr = S_OK;
LPWSTR adsPath = L"WinNT://Fabrikam/Administrators";
BSTR bstr = NULL;
hr = ADsGetObject(adsPath, IID_IADsGroup, (void**)&pGroup);
if(FAILED(hr))
{
goto Cleanup;
}
hr = pGroup->get_Description(&bstr);
if(FAILED(hr))
{
goto Cleanup;
}
printf("Description: %S\n",bstr);
SysFreeString(bstr);
VARIANT_BOOL inG=false;
hr = pGroup->IsMember(CComBSTR("WinNT://Microsoft/SecUser"), &inG);
if (inG )
{
printf("already in the group.\n");
}
else
{
hr = pGroup->Add(CComBSTR("WinNT://Microsoft/SecUser"));
if(FAILED(hr))
{
goto Cleanup;
}
printf("user added.\n");
}
Cleanup:
if(pGroup)
{
pGroup->Release();
}
if(bstr)
{
SysFreeString(bstr);
}
return hr;
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows Vista |
最低受支持的服务器 | Windows Server 2008 |
目标平台 | Windows |
标头 | iads.h |
DLL | Activeds.dll |