Compartir a través de


Recuperar la DACL de un objeto

El descriptor de seguridad de un objeto puede contener una lista de control de acceso discrecional (DACL). Una DACL contiene cero o más entradas de control de acceso (ACE) que identifican a los usuarios y grupos que pueden acceder al objeto. Si una DACL está vacía (es decir, contiene cero ACE), no se concede explícitamente ningún acceso, por lo que el acceso se deniega implícitamente. Sin embargo, si el descriptor de seguridad de un objeto no tiene una DACL, el objeto no está protegido y todos tienen acceso completo.

Para recuperar la DACL de un objeto, debe ser el propietario del objeto o tener READ_CONTROL acceso al objeto.

Para obtener y establecer la DACL de un objeto de directorio, use la interfaz IADsSecurityDescriptor . Con C++, el método IADsSecurityDescriptor::get_DiscretionaryAcl devuelve un puntero IDispatch . Llame a QueryInterface en ese puntero IDispatch para obtener una interfaz IADsAccessControlList y use los métodos de esa interfaz para acceder a las ACA individuales en la DACL. El procedimiento para modificar una DACL se describe en Establecer derechos de acceso en un objeto.

Para enumerar los AE, use el método IADsAccessControlList::get__NewEnum . El método devuelve un puntero IUnknown . Llame a QueryInterface en ese puntero IUnknown para obtener una interfaz IEnumVARIANT . Use el método IEnumVARIANT::Next para enumerar los ACL en la ACL. Cada ACE se devuelve como variant que contiene un puntero IDispatch (el miembro vt es VT_DISPATCH). Llame a QueryInterface en ese puntero IDispatch para obtener una interfaz IADsAccessControlEntry para la ACE. Puede usar los métodos de la interfaz IADsAccessControlEntry para establecer o recuperar los componentes de una ACE.

Para obtener más información sobre las ACL y las ACL, consulte los temas siguientes en el Kit de desarrollo de software de plataforma (SDK).