Interface IADsSecurityDescriptor (iads.h)
A interface IADsSecurityDescriptor fornece acesso a propriedades em um objeto descritor de segurança ADSI.
Herança
A interface IADsSecurityDescriptor herda da interface IDispatch . IADsSecurityDescriptor também tem estes tipos de membros:
Métodos
A interface IADsSecurityDescriptor tem esses métodos.
IADsSecurityDescriptor::CopySecurityDescriptor O método IADsSecurityDescriptor::CopySecurityDescriptor copia um objeto descritor de segurança ADSI que contém dados de segurança sobre um objeto . |
Comentários
Use essa interface para examinar e alterar os controles de acesso para um objeto de serviço de diretório do Active Directory. Você também pode usá-lo para criar cópias de um descritor de segurança. Para obter essa interface, use o método IADs.Get para obter o atributo ntSecurityDescriptor do objeto. Para obter mais informações sobre como criar um novo descritor de segurança e defini-lo em um objeto , consulte Criando um descritor de segurança para um novo objeto de diretório e DACLs nulos e DACLs vazias.
Geralmente, não é possível modificar todas as partes do descritor de segurança. Por exemplo, se o usuário atual tiver controle total de um objeto, mas não for um administrador e não for o proprietário do objeto, o usuário poderá modificar a DACL, mas não poderá modificar o proprietário. Isso causará um erro quando o ntSecurityDescriptor for atualizado. Para evitar esse problema, a interface IADsObjectOptions pode ser usada para especificar as partes específicas do descritor de segurança que devem ser modificadas.
Exemplos
O exemplo de código a seguir mostra como usar a interface IADsObjectOptions para modificar apenas partes específicas do descritor de segurança.
Const ADS_OPTION_SECURITY_MASK = 3
Const ADS_SECURITY_INFO_OWNER = 1
Const ADS_SECURITY_INFO_GROUP = 2
Const ADS_SECURITY_INFO_DACL = 4
Dim obj as IADs
Dim sd as IADsSecurityDescriptor
Dim oOptions as IADsObjectOptions
' Bind to the object.
Set obj = GetObject("LDAP://.....")
' Get the IADsSecurityDescriptor.
Set sd = obj.Get("ntSecurityDescriptor")
' Modify the DACL as required.
' Get the IADsObjectOptions for the object - not the IADsSecurityDescriptor.
Set oOptions = obj
' Set options so that only the DACL will be updated.
oOptions.SetOption ADS_OPTION_SECURITY_MASK, ADS_INFO_DACL
' Update the security descriptor.
obj.Put "ntSecurityDescriptor", sd
obj.SetInfo
O exemplo de código a seguir mostra como exibir dados de um descritor de segurança.
' Get the security descriptor.
Dim x As IADs
Dim sd As IADsSecurityDescriptor
On Error GoTo Cleanup
Set x = GetObject("LDAP://DC=Fabrikam,DC=com")
Set sd = x.Get("ntSecurityDescriptor")
Debug.Print sd.Control
Debug.Print sd.Group
Debug.Print sd.Owner
Debug.Print sd.Revision
Cleanup:
If (Err.Number<>0) Then
MsgBox("An error has occurred. " & Err.Number)
End If
Set x = Nothing
Set sd = Nothing
O exemplo de código a seguir mostra como exibir dados de um descritor de segurança de um objeto de diretório.
HRESULT DisplaySD(IADs *pObj)
{
IADsSecurityDescriptor *pSD = NULL;
BSTR bstr = NULL;
long lVal = 0;
HRESULT hr = S_OK;
VARIANT var;
VariantInit(&var);
if(pObj==NULL)
{
return E_FAIL;
}
hr = pObj->Get(CComBSTR("ntSecurityDescriptor"), &var);
if(FAILED(hr)){goto Cleanup;}
hr = V_DISPATCH(&var)->QueryInterface(IID_IADsSecurityDescriptor,(void**)&pSD);
if(FAILED(hr)){goto Cleanup;}
hr = pSD->get_Control(&lVal);
printf("SD Control = %d\n",lVal);
hr = pSD->get_Owner(&bstr);
printf("SD Owner = %S\n",bstr);
SysFreeString(bstr);
hr = pSD->get_Group(&bstr);
printf("SD Group = %S\n",bstr);
SysFreeString(bstr);
hr = pSD->get_Revision(&lVal);
printf("SD Revision= %d\n",lVal);
Cleanup:
VariantClear(&var);
if(pSD) pSD->Release();
return hr;
}
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte | Windows Vista |
Servidor mínimo com suporte | Windows Server 2008 |
Plataforma de Destino | Windows |
Cabeçalho | iads.h |
Confira também
Criando um descritor de segurança para um novo objeto de diretório