enumerazione ADS_SECURITY_INFO_ENUM (iads.h)
L'enumerazione ADS_SECURITY_INFO_ENUM specifica le opzioni disponibili per esaminare i dati di sicurezza di un oggetto.
Sintassi
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;
Costanti
ADS_SECURITY_INFO_OWNER Valore: 0x1 Legge o imposta i dati del proprietario. |
ADS_SECURITY_INFO_GROUP Valore: 0x2 Legge o imposta i dati del gruppo. |
ADS_SECURITY_INFO_DACL Valore: 0x4 Legge o imposta i dati dell'elenco di controllo di accesso discrezionale. |
ADS_SECURITY_INFO_SACL Valore: 0x8 Legge o imposta i dati dell'elenco di controllo di accesso del sistema. |
Commenti
Le opzioni definite in questa enumerazione sono maschere di bit. È possibile impostare più opzioni usando le operazioni bit per bit appropriate.
Per leggere i dati di sicurezza per un oggetto, usare l'interfaccia IADsObjectOptions , fornendo le opzioni dei dati di sicurezza elencate in questa enumerazione.
Nell'elenco seguente sono elencate le combinazioni di flag comuni e il relativo utilizzo.
Combinazione di flag | Descrizione |
---|---|
ADS_SECURITY_INFO_OWNER, ADS_SECURITY_INFO_GROUP e ADS_SECURITY_INFO_DACL | Consentire agli utenti di leggere i dati di sicurezza del proprietario, del gruppo o dell'elenco DACL di un oggetto. Questa è l'impostazione predefinita quando viene creato un oggetto. |
ADS_SECURITY_INFO_OWNER, ADS_SECURITY_INFO_GROUP, ADS_SECURITY_INFO_DACL e ADS_SECURITY_INFO_SACL | Consentire agli utenti di leggere SACL. Il flag ADS_SECURITY_INFO_SACL non può essere utilizzato da solo. |
Attualmente, queste opzioni sono disponibili solo per Active Directory.
Poiché Visual Basic Scripting Edition (VBScript) non è in grado di leggere i dati da una libreria dei tipi, un'applicazione deve usare le costanti numeriche appropriate, anziché le costanti simboliche, per impostare i flag appropriati. Per usare le costanti simboliche come procedura di programmazione consigliata, scrivere dichiarazioni esplicite di tali costanti, come fatto qui.
Esempio
Nell'esempio di codice seguente viene visualizzato il numero di voci di controllo di accesso in un elenco 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
Nell'esempio di codice seguente viene visualizzato il numero di voci di controllo di accesso in un elenco di controllo di accesso. Per brevità, il controllo degli errori viene omesso.
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);
}
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Windows Vista |
Server minimo supportato | Windows Server 2008 |
Intestazione | iads.h |