Eventi
19 nov, 23 - 21 nov, 23
Ottenere il vantaggio competitivo necessario con potenti soluzioni di intelligenza artificiale e cloud partecipando a Microsoft Ignite online.
Iscriviti subitoQuesto browser non è più supportato.
Esegui l'aggiornamento a Microsoft Edge per sfruttare i vantaggi di funzionalità più recenti, aggiornamenti della sicurezza e supporto tecnico.
I metodi di proprietà dell'interfaccia IADsAccessControlEntry ottengono o impostano le proprietà descritte nella tabella seguente. Per altre informazioni, vedere Metodi di proprietà dell'interfaccia.
Accessmask
Contiene un set di flag che specifica i privilegi di accesso per l'oggetto. I valori validi per gli oggetti Active Directory sono definiti nell'enumerazione ADS_RIGHTS_ENUM .
Per altre informazioni e un elenco dei valori possibili per gli oggetti di condivisione file o file, vedere Protezione file e diritti di accesso.
Per altre informazioni e un elenco dei valori possibili per gli oggetti del Registro di sistema, vedere Sicurezza della chiave del Registro di sistema e Diritti di accesso.
Tipo di accesso: lettura/scrittura
Tipo di dati scripting: LONG
// C++ method syntax
HRESULT get_AccessMask(
[out] LONG* plnAccessMask
);
HRESULT put_AccessMask(
[in] LONG lnAccessMask
);
AceFlags
Contiene un set di flag che specifica se altri contenitori o oggetti possono ereditare l'ace. I valori validi per l'oggetto Active Directory sono definiti nell'enumerazione ADS_ACEFLAG_ENUM .
Per altre informazioni e valori possibili per file, condivisione file e oggetti del Registro di sistema, vedere il membro AceFlags della struttura ACE_HEADER .
Tipo di accesso: lettura/scrittura
Tipo di dati scripting: LONG
// C++ method syntax
HRESULT get_AceFlags(
[out] LONG* plnAceFlags
);
HRESULT put_AceFlags(
[in] LONG lnAceFlags
);
AceType
Contiene un valore che indica il tipo di ACE. I valori validi per gli oggetti Active Directory sono definiti nell'enumerazione ADS_ACETYPE_ENUM .
Per altre informazioni e valori possibili per gli oggetti file, condivisione file e Registro di sistema, vedere il membro AceType della struttura ACE_HEADER .
Tipo di accesso: lettura/scrittura
Tipo di dati scripting: LONG
// C++ method syntax
HRESULT get_AceType(
[out] LONG* plAceType
);
HRESULT put_AceType(
[in] LONG lnAceType
);
Flag
Flag che indica se ACE ha un tipo di oggetto o un tipo di oggetto ereditato. I flag validi sono definiti nell'enumerazione ADS_FLAGTYPE_ENUM .
Tipo di accesso: lettura/scrittura
Tipo di dati scripting: LONG
// C++ method syntax
HRESULT get_Flags(
[out] LONG* lnflags
);
HRESULT put_Flags(
[in] LONG lnflags
);
InheritedObjectType
Flag che indica il tipo di un oggetto figlio di un oggetto ADSI. Il valore è un GUID a un oggetto in formato stringa. Quando tale GUID è impostato, l'ace si applica solo all'oggetto a cui fa riferimento il GUID.
Tipo di accesso: lettura/scrittura
Tipo di dati scripting: BSTR
// C++ method syntax
HRESULT get_InheritedObjectType(
[out] BSTR* bstrInheritedObjectType
);
HRESULT put_InheritedObjectType(
[in] BSTR bstrInheritedObjectType
);
ObjectType
Flag che indica il tipo di oggetto ADSI. Il valore è un GUID di una proprietà o di un oggetto in formato stringa. Il GUID fa riferimento a una proprietà quando vengono utilizzati ADS_RIGHT_DS_READ_PROP e ADS_RIGHT_DS_WRITE_PROP maschere di accesso. Il GUID specifica un oggetto quando vengono utilizzati ADS_RIGHT_DS_CREATE_CHILD e ADS_RIGHT_DS_DELETE_CHILD maschere di accesso.
Tipo di accesso: lettura/scrittura
Tipo di dati scripting: BSTR
// C++ method syntax
HRESULT get_ObjectType(
[out] BSTR* bstrObjectType
);
HRESULT put_ObjectType(
[in] BSTR bstrObjectType
);
Fiduciario
Contiene il nome dell'account a cui si applica l'ace.
Tipo di accesso: lettura/scrittura
Tipo di dati scripting: BSTR
// C++ method syntax
HRESULT get_Trustee(
[out] BSTR* pbstrSecurityId
);
HRESULT put_Trustee(
[in] BSTR bstrSecurityId
);
Nell'esempio di codice seguente viene illustrato come aggiungere voci a un elenco di controllo di accesso discrezionale usando i metodi della proprietà 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
Nell'esempio di codice seguente vengono visualizzate le voci di controllo di accesso.
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;
}
Requisito | Valore |
---|---|
Client minimo supportato |
Windows Vista |
Server minimo supportato |
Windows Server 2008 |
Intestazione |
|
DLL |
|
IID |
IID_IADsAccessControlEntry è definito come B4F3A14C-9BDD-11D0-852C-00C04FD8D503 |
Eventi
19 nov, 23 - 21 nov, 23
Ottenere il vantaggio competitivo necessario con potenti soluzioni di intelligenza artificiale e cloud partecipando a Microsoft Ignite online.
Iscriviti subito