String(NT-Sec_Desc)-Eigenschaftentyp
Eigenschaften wie nTSecurityDescriptor verwenden den String(NT-Sec_Desc)-Syntaxtyp. Wenn eine solche Eigenschaft mit der Properties-Eigenschaft abgerufen wird, wird dieser Datentyp als COM-Objekt dargestellt, das in IADsSecurityDescriptor umgewandelt werden kann. Wenn eine solche Eigenschaft aus ResultPropertyValueCollection abgerufen wird, wird dieser Datentyp als Array von Byte-Werten dargestellt. Weitere Informationen zur nTSecurityDescriptor-Eigenschaft, dem String(NT-Sec_Desc)-Syntaxtyp und der IADsSecurityDescriptor-Schnittstelle finden Sie in den Themen "nTSecurityDescriptor", "String(NT-Sec_Desc)" und "IADsSecurityDescriptor" in der MSDN Library unter https://go.microsoft.com/fwlink/?LinkID=27252 (möglicherweise in englischer Sprache).
Seit .NET Framework 2.0 wird die Sicherheitsbeschreibung für ein Objekt der Active Directory-Domänendienste durch die ActiveDirectorySecurity-Klasse dargestellt und kann mit der ObjectSecurity-Eigenschaft abgerufen oder festgelegt werden.
Im folgenden Visual Basic-Beispiel wird veranschaulicht, wie die Sicherheitsbeschreibung eines Objekts gelesen wird.
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);
}
Im folgenden Visual Basic-Beispiel wird veranschaulicht, wie die Sicherheitsbeschreibung eines Objekts ausgegeben wird.
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();
Siehe auch
Referenz
System.DirectoryServices
ActiveDirectorySecurity
DirectoryEntry
ResultPropertyValueCollection
Byte
Konzepte
Send comments about this topic to Microsoft.
Copyright © 2007 Microsoft Corporation. Alle Rechte vorbehalten.