IADsGroup::IsMember 方法 (iads.h)
IADsGroup::IsMember 方法會判斷目錄服務物件是否為群組的立即成員。 此方法不會驗證任何巢狀群組中的成員資格。
語法
HRESULT IsMember(
BSTR bstrMember,
[out] VARIANT_BOOL *bMember
);
參數
bstrMember
包含目錄服務物件的 ADsPath,以驗證成員資格。 此 ADsPath 必須使用用來系結至群組的相同 ADSI 提供者。 例如,如果群組已系結至使用LDAP提供者,這個 ADsPath 也必須使用LDAP提供者。
[out] bMember
如果對像是群組的立即成員,則為接收VARIANT_TRUE之VARIANT_BOOL值的指標,否則為VARIANT_FALSE。
傳回值
這個方法支持標準傳回值,包括 S_OK。 如需詳細資訊,請參閱 ADSI 錯誤碼。
備註
雖然您可以使用成員 SID 透過 WinNT 提供者,在群組中新增或移除安全性主體, 但 IADsGroup.IsMember 方法不支援使用 SID ADsPath 進行驗證,如果成員是透過 WinNT 提供者屬於群組。
只有在群組和對象位於相同網域時, 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 |