ADS_SECURITY_INFO_ENUM enumeración (iads.h)
La enumeración ADS_SECURITY_INFO_ENUM especifica las opciones disponibles para examinar los datos de seguridad de un objeto.
Syntax
typedef enum __MIDL___MIDL_itf_ads_0001_0077_0002 {
ADS_SECURITY_INFO_OWNER = 0x1,
ADS_SECURITY_INFO_GROUP = 0x2,
ADS_SECURITY_INFO_DACL = 0x4,
ADS_SECURITY_INFO_SACL = 0x8
} ADS_SECURITY_INFO_ENUM;
Constantes
ADS_SECURITY_INFO_OWNER Valor: 0x1 Lee o establece los datos del propietario. |
ADS_SECURITY_INFO_GROUP Valor: 0x2 Lee o establece los datos del grupo. |
ADS_SECURITY_INFO_DACL Valor: 0x4 Lee o establece los datos de la lista de control de acceso discrecional. |
ADS_SECURITY_INFO_SACL Valor: 0x8 Lee o establece los datos de la lista de control de acceso del sistema. |
Comentarios
Las opciones definidas en esta enumeración son máscaras de bits. Se puede establecer más de una opción mediante las operaciones bit a bit adecuadas.
Para leer los datos de seguridad de un objeto, use la interfaz IADsObjectOptions y proporcione las opciones de datos de seguridad enumeradas en esta enumeración.
En la lista siguiente se enumeran las combinaciones de marcas comunes y su uso.
Combinación de marcas | Descripción |
---|---|
ADS_SECURITY_INFO_OWNER, ADS_SECURITY_INFO_GROUP y ADS_SECURITY_INFO_DACL | Permitir a los usuarios leer los datos de seguridad del propietario, grupo o DACL de un objeto. Esta es la configuración predeterminada cuando se crea un objeto. |
ADS_SECURITY_INFO_OWNER, ADS_SECURITY_INFO_GROUP, ADS_SECURITY_INFO_DACL y ADS_SECURITY_INFO_SACL | Permitir que los usuarios lean la SACL. La marca ADS_SECURITY_INFO_SACL no se puede usar por sí misma. |
Actualmente, estas opciones solo están disponibles para Active Directory.
Dado que Visual Basic Scripting Edition (VBScript) no puede leer datos de una biblioteca de tipos, una aplicación debe usar las constantes numéricas adecuadas, en lugar de las constantes simbólicas, para establecer las marcas adecuadas. Para usar las constantes simbólicas como práctica de programación recomendada, escriba declaraciones explícitas de estas constantes, como se hace aquí.
Ejemplos
En el ejemplo de código siguiente se muestra el número de entradas de control de acceso en una SACL.
Const ADS_SECURITY_INFO_OWNER = &H1
Const ADS_SECURITY_INFO_GROUP = &H2
Const ADS_SECURITY_INFO_DACL = &H4
Const ADS_SECURITY_INFO_SACL = &H8
Const ADS_OPTION_SECURITY_MASK = 3
Dim x As IADs
Dim dso As IADsOpenDSObject
Dim adsPath As String
Dim sd As IADsSecurityDescriptor
Dim sacl As IADsAccessControlList
Dim objOps As IADsObjectOptions
Dim opt As Variant
Dim canReadSacl As Variant
Set dso = GetObject("LDAP:")
adsPath = "LDAP://ArcSrv1/dc=Sales,dc=Fabrikam,dc=com"
Set x = dso.OpenDSObject(adsPath, vbNullString, vbNullString, 1)
Set objOps = x
canReadSacl = ADS_SECURITY_INFO_OWNER _
Or ADS_SECURITY_INFO_GROUP _
Or ADS_SECURITY_INFO_DACL _
Or ADS_SECURITY_INFO_SACL
opt = objOps.GetOption(ADS_OPTION_SECURITY_MASK)
If opt <> canReadSacl Then
objOps.SetOption ADS_OPTION_SECURITY_MASK, canReadSacl
End If
Set sd = x.Get("ntSecurityDescriptor")
Set sacl = sd.SystemAcl
Debug.Print "sacl(aceCount)= " & sacl.AceCount
En el ejemplo de código siguiente se muestra el número de entradas de control de acceso en una ACL del sistema. Por motivos de brevedad, se omite la comprobación de errores.
void TestObjectOptions()
{
long lCanReadSACL = ADS_SECURITY_INFO_OWNER |
ADS_SECURITY_INFO_GROUP |
ADS_SECURITY_INFO_DACL |
ADS_SECURITY_INFO_SACL;
HRESULT hr = S_OK;
CComPtr<IADs> spObj;
hr = ADsOpenObject(L"LDAP://arcSrv1/dc=Sales,dc=Fabrikam,dc=com",
NULL,
NULL,
ADS_SECURE_AUTHENTICATION,
IID_IADs,
(void**)&spObj);
if(S_OK != hr)
{
return;
}
CComPtr<IADsObjectOptions> spObjOps;
hr = spObj->QueryInterface(IID_IADsObjectOptions, (void**)&spObjOps);
if(S_OK != hr)
{
return;
}
CComVariant svar;
hr = spObjOps->GetOption(ADS_OPTION_SECURITY_MASK, &svar);
if(S_OK != hr)
{
return;
}
if(V_I4(&svar) != lCanReadSACL)
{
svar = lCanReadSACL;
hr = spObjOps->SetOption(ADS_OPTION_SECURITY_MASK, svar);
}
hr = spObj->Get(CComBSTR("ntSecurityDescriptor"), &svar);
if(S_OK != hr)
{
return;
}
CComPtr<IADsSecurityDescriptor> spSd;
hr = V_DISPATCH(&svar)->QueryInterface(IID_IADsSecurityDescriptor,
(void**)&spSd);
if(S_OK != hr)
{
return;
}
CComPtr<IDispatch> spDisp;
hr = spSd->get_SystemAcl(&spDisp);
if(S_OK != hr)
{
return;
}
CComPtr<IADsAccessControlList> spSacl;
hr = spDisp->QueryInterface(IID_IADsAccessControlList,
(void**)&spSacl);
if(S_OK != hr)
{
return;
}
LONG lOptions;
hr = spSacl->get_AceCount(&lOptions);
if(S_OK != hr)
{
return;
}
_tprintf(TEXT("Number of ACE's in the SACL is %d\n"), lOptions);
}
Requisitos
Requisito | Value |
---|---|
Cliente mínimo compatible | Windows Vista |
Servidor mínimo compatible | Windows Server 2008 |
Encabezado | iads.h |