Interfaz IADsSecurityDescriptor (iads.h)
La interfaz IADsSecurityDescriptor proporciona acceso a las propiedades de un objeto descriptor de seguridad ADSI.
Herencia
La interfaz IADsSecurityDescriptor hereda de la interfaz IDispatch . IADsSecurityDescriptor también tiene estos tipos de miembros:
Métodos
La interfaz IADsSecurityDescriptor tiene estos métodos.
IADsSecurityDescriptor::CopySecurityDescriptor El método IADsSecurityDescriptor::CopySecurityDescriptor copia un objeto descriptor de seguridad ADSI que contiene datos de seguridad sobre un objeto . |
Comentarios
Use esta interfaz para examinar y cambiar los controles de acceso a un objeto de servicio de directorio de Active Directory. También puede usarlo para crear copias de un descriptor de seguridad. Para obtener esta interfaz, use el método IADs.Get para obtener el atributo ntSecurityDescriptor del objeto . Para obtener más información sobre cómo crear un nuevo descriptor de seguridad y establecerlo en un objeto, vea Creating a Security Descriptor for a New Directory Object and Null DACLs and Empty DACLs.
A menudo, no es posible modificar todas las partes del descriptor de seguridad. Por ejemplo, si el usuario actual tiene control total de un objeto, pero no es un administrador y no es propietario del objeto, el usuario puede modificar la DACL, pero no puede modificar el propietario. Esto provocará un error cuando se actualice ntSecurityDescriptor . Para evitar este problema, la interfaz IADsObjectOptions se puede usar para especificar las partes específicas del descriptor de seguridad que se deben modificar.
Ejemplos
En el ejemplo de código siguiente se muestra cómo usar la interfaz IADsObjectOptions para modificar solo partes específicas del descriptor de seguridad.
Const ADS_OPTION_SECURITY_MASK = 3
Const ADS_SECURITY_INFO_OWNER = 1
Const ADS_SECURITY_INFO_GROUP = 2
Const ADS_SECURITY_INFO_DACL = 4
Dim obj as IADs
Dim sd as IADsSecurityDescriptor
Dim oOptions as IADsObjectOptions
' Bind to the object.
Set obj = GetObject("LDAP://.....")
' Get the IADsSecurityDescriptor.
Set sd = obj.Get("ntSecurityDescriptor")
' Modify the DACL as required.
' Get the IADsObjectOptions for the object - not the IADsSecurityDescriptor.
Set oOptions = obj
' Set options so that only the DACL will be updated.
oOptions.SetOption ADS_OPTION_SECURITY_MASK, ADS_INFO_DACL
' Update the security descriptor.
obj.Put "ntSecurityDescriptor", sd
obj.SetInfo
En el ejemplo de código siguiente se muestra cómo mostrar datos de un descriptor de seguridad.
' Get the security descriptor.
Dim x As IADs
Dim sd As IADsSecurityDescriptor
On Error GoTo Cleanup
Set x = GetObject("LDAP://DC=Fabrikam,DC=com")
Set sd = x.Get("ntSecurityDescriptor")
Debug.Print sd.Control
Debug.Print sd.Group
Debug.Print sd.Owner
Debug.Print sd.Revision
Cleanup:
If (Err.Number<>0) Then
MsgBox("An error has occurred. " & Err.Number)
End If
Set x = Nothing
Set sd = Nothing
En el ejemplo de código siguiente se muestra cómo mostrar datos de un descriptor de seguridad de un objeto de directorio.
HRESULT DisplaySD(IADs *pObj)
{
IADsSecurityDescriptor *pSD = NULL;
BSTR bstr = NULL;
long lVal = 0;
HRESULT hr = S_OK;
VARIANT var;
VariantInit(&var);
if(pObj==NULL)
{
return E_FAIL;
}
hr = pObj->Get(CComBSTR("ntSecurityDescriptor"), &var);
if(FAILED(hr)){goto Cleanup;}
hr = V_DISPATCH(&var)->QueryInterface(IID_IADsSecurityDescriptor,(void**)&pSD);
if(FAILED(hr)){goto Cleanup;}
hr = pSD->get_Control(&lVal);
printf("SD Control = %d\n",lVal);
hr = pSD->get_Owner(&bstr);
printf("SD Owner = %S\n",bstr);
SysFreeString(bstr);
hr = pSD->get_Group(&bstr);
printf("SD Group = %S\n",bstr);
SysFreeString(bstr);
hr = pSD->get_Revision(&lVal);
printf("SD Revision= %d\n",lVal);
Cleanup:
VariantClear(&var);
if(pSD) pSD->Release();
return hr;
}
Requisitos
Requisito | Value |
---|---|
Cliente mínimo compatible | Windows Vista |
Servidor mínimo compatible | Windows Server 2008 |
Plataforma de destino | Windows |
Encabezado | iads.h |
Consulte también
Crear un descriptor de seguridad para un nuevo objeto de directorio