共用方式為


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

另請參閱

ADSI 錯誤碼

IADsGroup

IADsGroup 屬性方法

IADsMembers