IADsContainer インターフェイス (iads.h)
IADsContainer インターフェイスを使用すると、ADSI コンテナー オブジェクトは、含まれている ADSI オブジェクトを作成、削除、および管理できます。 コンテナー オブジェクトは、ファイル システムなどの階層ディレクトリ ツリーを表し、ディレクトリ階層を整理します。
IADsContainer インターフェイスを使用して、包含オブジェクトを列挙するか、ライフサイクルを管理できます。 たとえば、ディレクトリ ツリー内を再帰的に移動します。 ADSI オブジェクトの IADsContainer インターフェイスに対してクエリを実行すると、オブジェクトに子があるかどうかを判断できます。 インターフェイスがサポートされていない場合、オブジェクトはリーフです。 それ以外の場合は、コンテナーです。 このプロセスは、新しく見つかったコンテナー オブジェクトに対して続行できます。 オブジェクトを作成、コピー、または削除するには、コンテナー オブジェクトに要求を送信してタスクを実行します。
継承
IADsContainer インターフェイスは、IDispatch インターフェイスから継承されます。 IADsContainer には、次の種類のメンバーもあります。
メソッド
IADsContainer インターフェイスには、これらのメソッドがあります。
IADsContainer::CopyHere IADsContainer::CopyHere メソッドは、指定されたディレクトリ オブジェクトのコピーをこのコンテナーに作成します。 |
IADsContainer::Create 指定したスキーマ クラスのディレクトリ オブジェクトと、コンテナー内の指定した名前を作成する要求を設定します。 |
IADsContainer::D elete 指定したディレクトリ オブジェクトをこのコンテナーから削除します。 |
IADsContainer::get__NewEnum コンテナーの列挙子オブジェクトを取得します。 |
IADsContainer::GetObject コンテナー内のディレクトリ オブジェクトのインターフェイスを取得します。 |
IADsContainer::MoveHere 指定した オブジェクトを、このインターフェイスを実装するコンテナーに移動します。 |
注釈
オブジェクトがコンテナーかどうかを確認するには、オブジェクトの IADsClass.Container プロパティを使用します。
GUID (または SID) を使用してコンテナー オブジェクトにバインドする場合、コンテナー オブジェクトに対して特定の操作のみを実行できます。 これらの操作には、オブジェクト属性の検査と、オブジェクトの直接の子の列挙が含まれます。 これらの操作を次のコード例に示します。
Dim con As IADsContainer
Dim obj As IADs
Set con = GetObject("LDAP://svr01/<GUID=xxxx>")
con.Filter = Array("user")
For Each item In con
debug.print item.Name " & " of " & item.Class
Next
他のすべての操作 ( GetObject、 Create、 Delete、 CopyHere、 MoveHere ) は、コンテナーの GUID 表現ではサポートされていません。 たとえば、次のコード例の最後の行でエラーが発生します。
Dim con As IADsContainer
Dim obj As IADs
Set con = GetObject("LDAP://svr01/<GUID=xxxx>")
Set obj = con.GetObject("user", "CN=Jeff Smith")
GUID (または SID) を使用したバインディングは、オーバーヘッドが少ないため、高速バインドを目的としているため、オブジェクトのイントロスペクションによく使用されます。
GUID (または SID) でバインドされたコンテナーのこれらのメソッドを呼び出すには、識別名を使用してオブジェクトに再バインドします。
Dim conGUID, conDN As IADsContainer
Dim obj As IADs
Set conGUID = GetObject("LDAP://svr/<GUID=xxxx>")
Set conDN=GetObject("LDAP://svr/" & conGUID.Get("distinguishedName"))
Set obj = conDN.GetObject("user", "CN=Jeff Smith")
オブジェクト GUID 表現の詳細については、「 IADs.GUID」を参照してください。
例
次のコード例では、ADSI オブジェクトがコンテナーであるかどうかを判断します。
Dim obj As IADs
Dim cls As IADsClass
On Error GoTo Cleanup
Set obj = GetObject("WinNT://myComputer,computer")
Set cls = GetObject(obj.Schema)
If (cls.Container = TRUE) Then
MsgBox "The object is a container."
Else
MsgBox "The object is a leaf."
End If
Cleanup:
If (Err.Number<>0) Then
MsgBox("An error has occurred. " & Err.Number)
End If
Set obj = Nothing
Set cls = Nothing
次のコード例では、ADSI オブジェクトがコンテナーであるかどうかを判断します。
IADs *pADs = NULL;
IADsClass *pCls = NULL;
HRESULT hr = S_OK;
BSTR bstr;
hr = ADsGetObject(L"WinNT://myComputer,computer", IID_IADs, (void**)&pADs);
if(FAILED(hr)){return;}
pADs->get_Schema(&bstr);
hr = ADsGetObject(bstr, IID_IADsClass, (void**)&pCls);
pADs->Release();
SysFreeString(bstr);
if(FAILED(hr)){return;}
VARIANT_BOOL isContainer;
pCls->get_Container(&isContainer);
if(isContainer)
printf("Object is a container.\n");
else
printf("Object is not a container.\n");
pCls->Release();
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows Vista |
サポートされている最小のサーバー | Windows Server 2008 |
対象プラットフォーム | Windows |
ヘッダー | iads.h |