Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Las propiedades como nTSecurityDescriptor utilizan el tipo de sintaxis String(NT-Sec_Desc). Si se obtiene una propiedad de este tipo con la propiedad Properties, este tipo de datos se representa como objeto COM que se puede convertir en un IADsSecurityDescriptor. Si se obtiene una propiedad de este tipo de una ResultPropertyValueCollection, este tipo de datos se representa como una matriz de valores Byte. Para obtener más información acerca de la propiedad nTSecurityDescriptor, el tipo de sintaxis String(NT-Sec_Desc) y la interfaz IADsSecurityDescriptor, vea el tema nTSecurityDescriptor, el tema String(NT-Sec_Desc) y el tema IADsSecurityDescriptor de la biblioteca de MSDN en https://go.microsoft.com/fwlink/?LinkID=27252.
A partir de .NET Framework 2.0, el descriptor de seguridad de un objeto de Active Directory se representa mediante la clase ActiveDirectorySecurity y se puede obtener o establecer con la propiedad ObjectSecurity.
En el siguiente ejemplo de Visual Basic se muestra cómo leer un descriptor de seguridad de un objeto.
Imports ActiveDS
Imports System.Collections
Dim ent As New DirectoryEntry("LDAP://CN=My User Name,OU=Marketing,DC=fabrikam,DC=com")
Dim sd As SecurityDescriptor = CType(ent.Properties("ntSecurityDescriptor").Value, SecurityDescriptor)
Dim acl As AccessControlList = CType(sd.DiscretionaryAcl, AccessControlList)
Dim ace As AccessControlEntry
For Each ace In CType(acl, IEnumerable)
Console.WriteLine("Trustee: {0}", ace.Trustee)
Console.WriteLine("AccessMask: {0}", ace.AccessMask)
Console.WriteLine("Access Type: {0}", ace.AceType)
Next ace
using ActiveDs;
using System.Collections;
DirectoryEntry ent = new DirectoryEntry("LDAP://CN=My User Name,OU=Marketing,DC=fabrikam,DC=com");
SecurityDescriptor sd = (SecurityDescriptor) ent.Properties["ntSecurityDescriptor"].Value;
AccessControlList acl= (AccessControlList) sd.DiscretionaryAcl;
foreach(AccessControlEntry ace in (IEnumerable) acl)
{
Console.WriteLine("Trustee: {0}", ace.Trustee);
Console.WriteLine("AccessMask: {0}", ace.AccessMask);
Console.WriteLine("Access Type: {0}", ace.AceType);
}
En el siguiente ejemplo de Visual Basic se muestra cómo escribir un descriptor de seguridad en un objeto.
Import ActiveDS
Dim usr As New DirectoryEntry("LDAP://CN=My User Name,OU=Marketing,DC=fabrikam,DC=com")
Dim newAce = New AccessControlEntryClass()
Dim usrSD As SecurityDescriptor = CType(usr.Properties("ntSecurityDescriptor").Value, SecurityDescriptor)
Dim usrAcl As AccessControlList = CType(usrSD.DiscretionaryAcl, AccessControlList)
newAce.Trustee = "AliceW"
newAce.AccessMask = - 1
newAce.AceType = 0
usrAcl.AddAce(newAce)
usrSD.DiscretionaryAcl = usrAcl
usr.Properties("ntSecurityDescriptor").Value = usrSD
usr.CommitChanges()
using ActiveDS;
DirectoryEntry usr = new DirectoryEntry("LDAP://CN=My User Name,OU=Marketing,DC=fabrikam,DC=com");
AccessControlEntry newAce = new AccessControlEntryClass();
SecurityDescriptor usrSD = (SecurityDescriptor)usr.Properties["ntSecurityDescriptor"].Value; AccessControlList usrAcl= (AccessControlList) usrSD.DiscretionaryAcl;
newAce.Trustee = "AliceW";
newAce.AccessMask = -1;
newAce.AceType = 0;
usrAcl.AddAce(newAce);
usrSD.DiscretionaryAcl = usrAcl;
usr.Properties["ntSecurityDescriptor"].Value = usrSD;
usr.CommitChanges();
Consulte también
Referencia
System.DirectoryServices
ActiveDirectorySecurity
DirectoryEntry
ResultPropertyValueCollection
Byte
Conceptos
Send comments about this topic to Microsoft.
Copyright © 2007 Microsoft Corporation. Reservados todos los derechos.