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::Get 和 IADs::P ut ,但在对已删除的对象调用 IADs::SetInfo 或 IADs::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 |
另请参阅
IADs::get_Name