IADsAccessControlList::AddAce-Methode (iads.h)
Die IADsAccessControlList::AddAce-Methode fügt dem IADsAccessControlEntry-Objekt ein IADsAccessControlEntry-Objekt hinzu.
Syntax
HRESULT AddAce(
[in] IDispatch *pAccessControlEntry
);
Parameter
[in] pAccessControlEntry
Zeiger auf die IDispatch-Schnittstelle des hinzuzufügenden IADsAccessControlEntry-Objekts . Dieser Parameter darf nicht NULL sein.
Rückgabewert
Gibt einen HRESULT-Standardwert zurück, der Folgendes enthält.
Hinweise
Zugriffssteuerungseinträge müssen in der Zugriffssteuerungsliste eines Sicherheitsdeskriptors in der folgenden Reihenfolge angezeigt werden:
- Zugriffsverweigerungs-ACEs, die für das Objekt selbst gelten
- Zugriffsverweigerungs-ACEs, die für ein untergeordnetes Objekt gelten, z. B. einen Eigenschaftensatz oder eine Eigenschaft
- Zugriffsberechtigungs-ACEs, die für das Objekt selbst gelten
- Zugriffsberechtigungs-ACEs, die für ein untergeordnetes Objekt gelten, z. B. einen Eigenschaftssatz oder eine Eigenschaft
- Alle geerbten ACEs
Beispiele
Das folgende Visual Basic-Codebeispiel zeigt, wie Sie die IADsAccessControlList::AddAce-Methode verwenden, um einer ACL zwei ACEs hinzuzufügen.
Const ACL_REVISION_DS = &H4
Dim x as IADs
Dim sd as IADsSecurityDescriptor
Dim Ace1 As new IADsAccessControlEntry
Dim Ace2 As new IADsAccessControlEntry
Dim Dacl As new IADsAccessControlList
On Error GoTo Cleanup
Set x = GetObject("LDAP://OU=Sales,DC=Fabrikam,DC=com")
Set sd = x.Get("ntSecurityDescriptor")
' Add the ACEs to the Discretionary ACL.
Dacl.AclRevision = ACL_REVISION_DS 'DS ACL Revision
' Set up the first ACE.
Ace1.AccessMask = -1 'Full Permission (Allowed)
Ace1.AceType = ADS_ACETYPE_ACCESS_ALLOWED
Ace1.AceFlags = ADS_ACEFLAG_INHERIT_ACE
Ace1.Trustee = "myMachine\Administrator"
' Set up the 2nd ACE.
Ace2.AccessMask = -1 'Full Permission (Denied)
Ace2.AceType = ADS_ACETYPE_ACCESS_DENIED
Ace2.AceFlags = ADS_ACEFLAG_INHERIT_ACE
Ace2.Trustee = "aDomain\aUser"
' Add the ACEs to the Discretionary ACL.
Dacl.AddAce Ace1
Dacl.AddAce Ace2
'Commit the changes.
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 Ace1 = Nothing
Set Ace2 = Nothing
Set Dacl = Nothing
Set x = Nothing
Set sd = Nothing
Im folgenden C++-Codebeispiel wird einer ACL mithilfe der IADsAccessControlList::AddAce-Methode ein ACE hinzugefügt. Der hinzugefügte ACE hat Zugriffsrechte mit der vollständigen Berechtigung zugelassen.
HRESULT addAceTo(IADsAccessControlList *pAcl)
{
if(!pAcl)
{
return E_FAIL;
}
HRESULT hr = pAcl->put_AclRevision(ACL_REVISION_DS);
if(FAILED(hr))
{
return hr;
}
IADsAccessControlEntry *pAce = NULL;
pAce = createAce(-1, // Full permissions.
ADS_ACETYPE_ACCESS_ALLOWED,
ADS_ACEFLAG_INHERIT_ACE,
CComBSTR("aDomain\\aUser"));
if(!pAce)
{
return E_FAIL;
}
IDispatch *pDisp;
hr = pAce->QueryInterface(IID_IDispatch,(void**)&pDisp);
if(FAILED(hr))
{
pAce->Release();
return hr;
}
hr = pAcl->AddAce(pDisp);
pDisp->Release();
if(pAce) pAce->Release();
if(FAILED(hr))
{
return hr;
}
printf("Ace has been added to ACL.\n");
return hr;
}
////////////////////////////////////
// function to create an allowed ACE
////////////////////////////////////
IADsAccessControlEntry *createAce(
long mask,
long type,
long flag,
BSTR trustee)
{
HRESULT hr;
IADsAccessControlEntry *pAce;
hr = CoCreateInstance(CLSID_AccessControlEntry,
NULL,
CLSCTX_INPROC_SERVER,
IID_IADsAccessControlEntry,
(void**)&pAce);
if(FAILED(hr))
{
if(pAce)
{
pAce->Release();
}
return NULL;
}
hr = pAce->put_AccessMask(mask);
hr = pAce->put_AceType(type);
hr = pAce->put_AceFlags(flag);
hr = pAce->put_Trustee(trustee);
return pAce;
}
Anforderungen
Unterstützte Mindestversion (Client) | Windows Vista |
Unterstützte Mindestversion (Server) | Windows Server 2008 |
Zielplattform | Windows |
Kopfzeile | iads.h |
DLL | Activeds.dll |