IADsContainer::D elete 方法 (iads.h)

IADsContainer::D elete 方法从此容器中删除指定的目录对象。

语法

HRESULT Delete(
  [in] BSTR bstrClassName,
  [in] BSTR bstrRelativeName
);

parameters

[in] bstrClassName

要删除的架构类对象。 名称是从 IADs::get_Class 方法返回的。 此外, NULL 是此参数的有效选项。 为此参数提供 NULL 是处理已失效的架构类的唯一方法。 如果实例是在类失效之前创建的,则删除已失效类实例的唯一方法是调用 IADsContainer::D elete 并为此参数提供 NULL

[in] bstrRelativeName

对象在基础目录中已知的名称,与 使用 IADs::get_Name 方法检索的名称相同。

返回值

此方法支持标准返回值,包括成功操作S_OK。 有关错误代码的详细信息,请参阅 ADSI 错误代码

注解

要删除的对象必须是叶对象或无子子容器。 若要删除容器及其子级(即子树),请使用 IADsDeleteOps::D eleteObject

调用 IADsContainer::D elete 后,将立即删除指定的对象,并且不需要对容器对象调用 IADs::SetInfo

使用 IADsContainer::D elete 方法删除 C/C++ 应用程序中的对象时,也释放指向该对象的接口指针。 这是因为 方法会立即从基础目录中删除 对象,但应用程序在内存中为已删除的对象保留的任何接口指针保持不变。 如果未释放,则可能会出现混淆,你可能会对已删除的对象调用 IADs::GetIADs::P ut ,但在对已删除的对象调用 IADs::SetInfoIADs::GetInfo 时将收到错误。

示例

下面的代码示例从 Active Directory 中的容器中删除用户对象。

Dim cont as IADsContainer
On Error GoTo Cleanup

Set cont = GetObject("LDAP://OU=Sales,DC=Fabrikam,DC=com")
cont.Delete "user", "CN=JeffSmith"

Cleanup:
    If (Err.Number<>0) Then
        MsgBox("An error has occurred. " & Err.Number)
    End If
    Set cont = Nothing

下面的代码示例从 WinNT 提供程序下的容器中删除用户对象。

Dim cont as IADsContainer
On Error GoTo Cleanup

Set cont = GetObject("WinNT://Fabrikam")
cont.Delete "user", "jeffsmith"

Cleanup:
    If (Err.Number<>0) Then
        MsgBox("An error has occurred. " & Err.Number)
    End If
    Set cont = Nothing

下面的代码示例使用 IADsContainer::D elete 删除用户。

HRESULT hr = S_OK;
IADsContainer *pCont=NULL;
 
CoInitialize(NULL);
 
hr = ADsGetObject(L"WinNT://myMachine", 
                  IID_IADsContainer, 
                  (void**) &pCont);
if ( !SUCCEEDED(hr) )
{
     return hr;
}
 
hr = pCont->Delete(CComBSTR("user"), CComBSTR("JeffSmith"));
pCont->Release();

要求

   
最低受支持的客户端 Windows Vista
最低受支持的服务器 Windows Server 2008
目标平台 Windows
标头 iads.h
DLL Activeds.dll

另请参阅

ADSI 错误代码

IADs::Get

IADs::GetInfo

IADs::P ut

IADs::SetInfo

IADs::get_Class

IADs::get_Name

IADsContainer

IADsContainer::Create

IADsDeleteOps::D eleteObject