Méthodes de propriété IADsAccessControlEntry
Les méthodes de propriété de l’interface IADsAccessControlEntry obtiennent ou définissent les propriétés décrites dans le tableau suivant. Pour plus d’informations, consultez Méthodes de propriété d’interface.
Propriétés
-
AccessMask
-
-
Type d’accès : Lecture/écriture
-
Type de données de script : LONG
-
// C++ method syntax HRESULT get_AccessMask( [out] LONG* plnAccessMask ); HRESULT put_AccessMask( [in] LONG lnAccessMask );
Contient un ensemble d’indicateurs qui spécifient des privilèges d’accès pour l’objet. Les valeurs valides pour les objets Active Directory sont définies dans l’énumération ADS_RIGHTS_ENUM .
Pour plus d’informations et pour obtenir la liste des valeurs possibles pour les objets de partage de fichiers ou de fichiers, consultez Sécurité des fichiers et droits d’accès.
Pour plus d’informations et une liste des valeurs possibles pour les objets du Registre, consultez Sécurité de la clé de registre et droits d’accès.
-
-
AceFlags
-
-
Type d’accès : Lecture/écriture
-
Type de données de script : LONG
-
// C++ method syntax HRESULT get_AceFlags( [out] LONG* plnAceFlags ); HRESULT put_AceFlags( [in] LONG lnAceFlags );
Contient un ensemble d’indicateurs qui spécifie si d’autres conteneurs ou objets peuvent hériter de l’ACE. Les valeurs valides pour l’objet Active Directory sont définies dans l’énumération ADS_ACEFLAG_ENUM .
Pour plus d’informations et les valeurs possibles pour les objets de fichier, de partage de fichiers et de Registre, consultez le membre AceFlags de la structure ACE_HEADER .
-
-
AceType
-
-
Type d’accès : Lecture/écriture
-
Type de données de script : LONG
-
// C++ method syntax HRESULT get_AceType( [out] LONG* plAceType ); HRESULT put_AceType( [in] LONG lnAceType );
Contient une valeur qui indique le type d’ACE. Les valeurs valides pour les objets Active Directory sont définies dans l’énumération ADS_ACETYPE_ENUM .
Pour plus d’informations et les valeurs possibles pour les objets de fichier, de partage de fichiers et de Registre, consultez le membre AceType de la structure ACE_HEADER .
-
-
Indicateurs
-
-
Type d’accès : Lecture/écriture
-
Type de données de script : LONG
-
// C++ method syntax HRESULT get_Flags( [out] LONG* lnflags ); HRESULT put_Flags( [in] LONG lnflags );
Indicateur qui indique si l’ACE a un type d’objet ou un type d’objet hérité. Les indicateurs valides sont définis dans l’énumération ADS_FLAGTYPE_ENUM .
-
-
InheritedObjectType
-
-
Type d’accès : Lecture/écriture
-
Type de données de script : BSTR
-
// C++ method syntax HRESULT get_InheritedObjectType( [out] BSTR* bstrInheritedObjectType ); HRESULT put_InheritedObjectType( [in] BSTR bstrInheritedObjectType );
Indicateur qui indique le type d’un objet enfant d’un objet ADSI. Sa valeur est un GUID vers un objet au format chaîne. Lorsqu’un tel GUID est défini, l’ACE s’applique uniquement à l’objet auquel le GUID fait référence.
-
-
ObjectType
-
-
Type d’accès : Lecture/écriture
-
Type de données de script : BSTR
-
// C++ method syntax HRESULT get_ObjectType( [out] BSTR* bstrObjectType ); HRESULT put_ObjectType( [in] BSTR bstrObjectType );
Indicateur qui indique le type d’objet ADSI. Sa valeur est un GUID d’une propriété ou d’un objet au format chaîne. Le GUID fait référence à une propriété lorsque des masques d’accès ADS_RIGHT_DS_READ_PROP et ADS_RIGHT_DS_WRITE_PROP sont utilisés. Le GUID spécifie un objet lorsque des masques d’accès ADS_RIGHT_DS_CREATE_CHILD et ADS_RIGHT_DS_DELETE_CHILD sont utilisés.
-
-
Tiers de confiance
-
-
Type d’accès : Lecture/écriture
-
Type de données de script : BSTR
-
// C++ method syntax HRESULT get_Trustee( [out] BSTR* pbstrSecurityId ); HRESULT put_Trustee( [in] BSTR bstrSecurityId );
Contient le nom du compte auquel l’ACE s’applique.
-
Exemples
L’exemple de code suivant montre comment ajouter des entrées à une liste de contrôle d’accès discrétionnaire à l’aide des méthodes de propriété IADsAccessControlEntry .
Dim x As IADs
Dim sd As IADsSecurityDescriptor
Dim ace As IADsAccessControlEntry
Dim Dacl As IADsAccessControlList
Dim Ace1 As New AccessControlEntry
Dim Ace2 As New AccessControlEntry
On Error GoTo Cleanup
Set x = GetObject("LDAP://OU=Sales, DC=Fabrikam,DC=com")
Set sd = x.Get("ntSecurityDescriptor")
Set Dacl = sd.DiscretionaryAcl
' Show the existing ACEs.
For Each ace In Dacl
Debug.Print ace.Trustee
Next
' Setup the first ACE.
Ace1.AccessMask = -1 'Full Permission (Allowed)
Ace1.AceType = ADS_ACETYPE_ACCESS_ALLOWED
Ace1.AceFlags = ADS_ACEFLAG_INHERIT_ACE
Ace1.Trustee = "ACTIVED\Administrator"
' Setup the 2nd ACE.
Ace2.AccessMask = -1 'Full Permission (Denied)
Ace2.AceType = ADS_ACETYPE_ACCESS_DENIED
Ace2.AceFlags = ADS_ACEFLAG_INHERIT_ACE
Ace2.Trustee = "ACTIVED\Andyhar"
' Add the ACEs to the Discretionary ACL.
Dacl.AddAce Ace1
Dacl.AddAce Ace2
sd.DiscretionaryAcl = Dacl
x.Put "ntSecurityDescriptor", Array(sd)
x.SetInfo
Cleanup:
If (Err.Number<>0) Then
MsgBox("An error has occurred. " & Err.Number)
End If
Set x = Nothing
Set sd = Nothing
Set ace = Nothing
Set Dacl = Nothing
Set Ace1 = Nothing
Set Ace2 = Nothing
Set obj = Nothing
Set cls = Nothing
L’exemple de code suivant affiche les entrées de contrôle d’accès.
IADs *pADs = NULL;
IDispatch *pDisp = NULL;
IADsSecurityDescriptor *pSD = NULL;
VARIANT var;
HRESULT hr = S_OK;
VariantInit(&var);
hr = ADsOpenObject(L"LDAP://OU=Sales, DC=Fabrikam,DC=com",NULL,NULL,
ADS_SECURE_AUTHENTICATION, IID_IADs,(void**)&pADs);
if(FAILED(hr)) {goto Cleanup;}
hr = pADs->Get(CComBSTR("ntSecurityDescriptor"),&var);
if(FAILED(hr)) {goto Cleanup;}
pDisp = V_DISPATCH(&var);
hr = pDisp->QueryInterface(IID_IADsSecurityDescriptor,(void**)&pSD);
if(FAILED(hr)) {goto Cleanup;}
pDisp->Release();
pSD->get_DiscretionaryAcl(&pDisp);
hr = pDisp->QueryInterface(IID_IADsAccessControlList,(void**)&pACL);
if(FAILED(hr)) {goto Cleanup;}
hr = DisplayAccessInfo(pSD);
if(FAILED(hr)) {goto Cleanup;}
VariantClear(&var);
Cleanup:
if(pADs) pADs->Release();
if(pDisp) pDisp->Release();
if(pSD) pSD->Release();
return hr;
HRESULT DisplayAccessInfo(IADsSecurityDescriptor *pSD)
{
LPWSTR lpszFunction = L"DisplayAccessInfo";
IDispatch *pDisp = NULL;
IADsAccessControlList *pACL = NULL;
IADsAccessControlEntry *pACE = NULL;
IEnumVARIANT *pEnum = NULL;
IUnknown *pUnk = NULL;
HRESULT hr = S_OK;
ULONG nFetch = 0;
BSTR bstrValue = NULL;
VARIANT var;
LPWSTR lpszOutput = NULL;
LPWSTR lpszMask = NULL;
size_t nLength = 0;
VariantInit(&var);
hr = pSD->get_DiscretionaryAcl(&pDisp);
if(FAILED(hr)){goto Cleanup;}
hr = pDisp->QueryInterface(IID_IADsAccessControlList,(void**)&pACL);
if(FAILED(hr)){goto Cleanup;}
hr = pACL->get__NewEnum(&pUnk);
if(FAILED(hr)){goto Cleanup;}
hr = pUnk->QueryInterface(IID_IEnumVARIANT,(void**)&pEnum);
if(FAILED(hr)){goto Cleanup;}
hr = pEnum->Next(1,&var,&nFetch);
while(hr == S_OK)
{
if(nFetch==1)
{
if(VT_DISPATCH != V_VT(&var))
{
goto Cleanup;
}
pDisp = V_DISPATCH(&var);
hr = pDisp->QueryInterface(IID_IADsAccessControlEntry,(void**)&pACE);
if(SUCCEEDED(hr))
{
lpszMask = L"Trustee: %s";
hr = pACE->get_Trustee(&bstrValue);
nLength = wcslen(lpszMask) + wcslen(bstrValue) + 1;
lpszOutput = new WCHAR[nLength];
swprintf_s(lpszOutput,lpszMask,bstrValue);
printf(lpszOutput);
delete [] lpszOutput;
SysFreeString(bstrValue);
pACE->Release();
pACE = NULL;
pDisp->Release();
pDisp = NULL;
}
VariantClear(&var);
}
hr = pEnum->Next(1,&var,&nFetch);
}
Cleanup:
if(pDisp) pDisp->Release();
if(pACL) pACL->Release();
if(pACE) pACE->Release();
if(pEnum) pEnum->Release();
if(pUnk) pUnk->Release();
if(szValue) SysFreeString(szValue);
return hr;
}
Spécifications
Condition requise | Valeur |
---|---|
Client minimal pris en charge |
Windows Vista |
Serveur minimal pris en charge |
Windows Server 2008 |
En-tête |
|
DLL |
|
IID |
IID_IADsAccessControlEntry est défini comme B4F3A14C-9BDD-11D0-852C-00C04FD8D503 |