Méthode IADsAccessControlList::CopyAccessList (iads.h)
La méthode IADsAccessControlList::CopyAccessList copie chaque entrée de contrôle d’accès (ACE) de la liste de contrôle d’accès (ACL) dans l’espace de processus de l’appelant.
Syntaxe
HRESULT CopyAccessList(
[out] IDispatch **ppAccessControlList
);
Paramètres
[out] ppAccessControlList
Adresse d’un pointeur d’interface IDispatch vers une liste de contrôle d’accès en tant que copie de la liste d’accès d’origine. Si ce paramètre a la valeur NULL au retour, aucune copie de l’ACL n’a pu être effectuée.
Valeur retournée
Cette méthode retourne les valeurs de retour standard.
Pour plus d’informations sur les autres valeurs de retour, consultez Codes d’erreur ADSI.
Notes
L’appelant doit appeler Release sur la copie des ACI via leurs pointeurs IDispatch .
Exemples
L’exemple de code suivant montre comment copier une liste de contrôle d’accès d’un objet ADSI vers un autre.
Dim x As IADs
Dim sd As IADsSecurityDescriptor
Dim Dacl As IADsAccessControlList
Dim CopyDacl As IADsAccessControlList
' Get the ACL from one object.
Set x = GetObject("LDAP://OU=Sales, DC=activeD,DC=mydomain,DC=fabrikam,DC=com")
Set sd = x.Get("ntSecurityDescriptor")
Set Dacl = sd.DiscretionaryAcl
Set CopyDacl = Dacl.CopyAccessList()
' Copy the ACL to another object in the Directory.
Set x = GetObject("LDAP://OU=Sales, DC=Fabrikam,DC=com")
Set sd = x.Get("ntSecurityDescriptor")
sd.DiscretionaryAcl = CopyDacl
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 Dacl = Nothing
Set CopyDacl = Nothing
L’exemple de code suivant copie la liste de contrôle d’accès de l’objet source vers l’objet cible.
HRESULT CopyACL(IADs *pSource, IADs *pTarget)
{
IADsSecurityDescriptor *pSourceSD = NULL;
IADsSecurityDescriptor *pTargetSD = NULL;
IDispatch *pDisp = NULL;
HRESULT hr = S_OK;
VARIANT varSource, varTarget;
VariantInit(&varSource);
VariantInit(&varTarget);
if((pSource==NULL) || (pTarget==NULL))
{
return E_FAIL;
}
hr = pSource->Get(CComBSTR("ntSecurityDescriptor"), &varSource);
if(FAILED(hr))
{
goto Cleanup;
}
hr = pTarget->Get(CComBSTR("ntSecurityDescriptor"), &varTarget);
if(FAILED(hr))
{
goto Cleanup;
}
hr = V_DISPATCH(&varSource)->QueryInterface(IID_IADsSecurityDescriptor,
(void**)&pSourceSD);
if(FAILED(hr))
{
goto Cleanup;
}
hr = V_DISPATCH(&varTarget)->QueryInterface(IID_IADsSecurityDescriptor,
(void**)&pTargetSD);
if(FAILED(hr))
{
goto Cleanup;
}
hr = pSourceSD->get_DiscretionaryAcl(&pDisp);
if(FAILED(hr))
{
goto Cleanup;
}
hr = pTargetSD->put_DiscretionaryAcl(pDisp);
if(FAILED(hr))
{
goto Cleanup;
}
hr = pTarget->SetInfo();
Cleanup:
VariantClear(&varSource);
VariantClear(&varTarget);
if(pSourceSD)
{
pSourceSD->Release();
}
if(pTargetSD)
{
pTargetSD->Release();
}
if(pDisp)
{
pDisp->Release();
}
return hr;
}
Configuration requise
Client minimal pris en charge | Windows Vista |
Serveur minimal pris en charge | Windows Server 2008 |
Plateforme cible | Windows |
En-tête | iads.h |
DLL | Activeds.dll |