Sicherheitsbeschreibungen für Dateien und Registrierungsschlüssel

Active Directory Service Interfaces (ADSI) können verwendet werden, um Dateisysteme innerhalb eines organization zu verwalten und zu schützen, einschließlich der Möglichkeit, ACLs für von Benutzern erstellte Dateien oder Dateifreigaben festzulegen oder zu ändern. Sicherheitsschnittstellen wie IADsSecurityDescriptor, IADsAccessControlList und IADsAccessControlEntry legen ACLs für Active Directory-, Exchange-, Datei-, Dateifreigabe- oder Registrierungsschlüsselobjekte fest. Vor der Verwendung dieser Schnittstellen muss der Sicherheitsdeskriptor möglicherweise geändert werden, wenn er ein anderes Format als die Schnittstelle verwendet oder wenn Sie keine Zugriffsrechte auf die SACL des Sicherheitsdeskriptors haben, da Sie kein Mitglied der Sicherheitsadministratorgruppe sind.

Verwenden Sie die IADsSecurityUtility-Schnittstelle , um die Sicherheitsbeschreibung abzurufen, festzulegen oder zu ändern. Mit dieser Schnittstelle können Sie einen Sicherheitsdeskriptor aus verschiedenen Ressourcen im ursprünglichen Format abrufen, z. B. dem ADSI-Format IADsSecurityDescriptor, einem unformatierten Sicherheitsdeskriptor oder als hexadezimale Zeichenfolge, wie sie in Exchange 5.5 verwendet wird. Nach dem Abrufen können Sie sie in ein anderes Format konvertieren, z. B. von einem rohen Sicherheitsdeskriptor in IADsSecurityDescriptor. Anschließend können Sie das neue Format zurück in die Ressource schreiben.

Einige der Werte der IADsAccessControlEntry-Eigenschaft , z. B . AccessMask und AceFlags, unterscheiden sich für verschiedene Objekttypen. Beispielsweise verwendet ein Active Directory-Objekt den ADS_RIGHT_GENERIC_READ Member der ADS_RIGHTS_ENUM-Enumeration für die IADsAccessControlEntry.AccessMask-Eigenschaft , aber das entsprechende Zugriffsrecht für ein Dateiobjekt ist FILE_GENERIC_READ. Es ist nicht sicher anzunehmen, dass alle Eigenschaftswerte für Active Directory-Objekte und Nicht-Active Directory-Objekte identisch sind. Die folgende Liste zeigt die IADsAccessControlEntry-Eigenschaften , die sich für Nicht-Active Directory-Objekte unterscheiden und wo die richtigen Werte abgerufen werden können.

Accessmask

Weitere Informationen und eine Liste möglicher Werte für Datei- oder Dateifreigabeobjekte finden Sie unter Dateisicherheit und Zugriffsrechte.

Weitere Informationen und eine Liste möglicher Werte für Registrierungsobjekte finden Sie unter Sicherheit und Zugriffsrechte für Registrierungsschlüssel.

AceType

Weitere Informationen finden Sie im AceType-Element der ACE_HEADER-Struktur .

AceFlags

Weitere Informationen finden Sie im AceFlags-Element der ACE_HEADER-Struktur .

Flaggen

Enthält null oder eine Kombination aus mindestens einem der folgenden Werte von WinNT.h.

ACE_OBJECT_TYPE_PRESENT (1)

ObjectType enthält einen gültigen Wert.

ACE_INHERITED_OBJECT_TYPE_PRESENT (2)

InheritedObjectType enthält einen gültigen Wert.

Objecttype

Weitere Informationen finden Sie im ObjectType-Element der ACCESS_DENIED_OBJECT_ACE, ACCESS_ALLOWED_OBJECT_ACE und ähnlichen Strukturen. Diese Eigenschaft sollte nicht für Nicht-Active Directory-Objekte festgelegt oder geändert werden.

Inheritedobjecttype

Weitere Informationen finden Sie im InheritedObjectType-Member der ACCESS_DENIED_OBJECT_ACE, ACCESS_ALLOWED_OBJECT_ACE und ähnlichen Strukturen. Diese Eigenschaft sollte nicht für Nicht-Active Directory-Objekte festgelegt oder geändert werden.

Normalerweise ruft IADsSecurityUtility.GetSecurityDescriptor alle Teile des Sicherheitsdeskriptors ab, z. B. Besitzer, Gruppe, SACL oder DACL. Auf ähnliche Weise überschreibt IADsSecurityUtility.SetSecurityDescriptor standardmäßig alle Teile des Sicherheitsdeskriptors. Sie können die IADsSecurityUtility.SecurityMask-Eigenschaft verwenden, um einzelne Teile der Sicherheitsbeschreibung anzugeben, die abgerufen oder festgelegt werden sollen. Beispielsweise können Sie SecurityMask auf ADS_SECURITY_INFO_DACL festlegen, bevor Sie GetSecurityDescriptor aufrufen, um nur die DACL abzurufen, ohne die anderen Teile der Sicherheitsbeschreibung abzurufen.

Weitere Informationen und ein Codebeispiel, das die IADsSecurityUtility-Schnittstelle zum Hinzufügen eines ACE zu einer Datei verwendet, finden Sie unter Beispielcode für das Hinzufügen eines ACE zu einer Datei.

Der folgende Beispielcode stellt die konstanten Bezeichner für Datei-, Dateifreigabe- und Registrierungsobjekte für die AccessMask-, AceType-, AceFlags- und Flags-Eigenschaften zur Verwendung mit Visual Basic und Microsoft Visual Basic Scripting Edition bereit.

' Identifiers for the IADsAccessControlEntry.AccessMask property for file,
' file share, and registry objects.
Const DELETE = &H10000
Const READ_CONTROL = &H20000
Const WRITE_DAC = &H40000
Const WRITE_OWNER = &H80000
Const SYNCHRONIZE = &H100000

Const STANDARD_RIGHTS_REQUIRED = &HF0000

Const STANDARD_RIGHTS_READ = &H20000
Const STANDARD_RIGHTS_WRITE = &H20000
Const STANDARD_RIGHTS_EXECUTE = &H20000

Const STANDARD_RIGHTS_ALL = &H1F0000

Const SPECIFIC_RIGHTS_ALL = &HFFFF

' Identifiers for the IADsAccessControlEntry.AccessMask property for file and
' file share objects.
Const FILE_READ_DATA = &H1                  '  file & pipe
Const FILE_LIST_DIRECTORY = &H1             '  directory

Const FILE_WRITE_DATA = &H2                 '  file & pipe
Const FILE_ADD_FILE = &H2                   '  directory

Const FILE_APPEND_DATA = &H4                '  file
Const FILE_ADD_SUBDIRECTORY = &H4           '  directory
Const FILE_CREATE_PIPE_INSTANCE = &H4       '  named pipe

Const FILE_READ_EA = &H8                    '  file & directory

Const FILE_WRITE_EA = &H10                  '  file & directory

Const FILE_EXECUTE = &H20                   '  file
Const FILE_TRAVERSE = &H20                  '  directory

Const FILE_DELETE_CHILD = &H40              '  directory

Const FILE_READ_ATTRIBUTES = &H80           '  all

Const FILE_WRITE_ATTRIBUTES = &H100         '  all

Const FILE_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED Or SYNCHRONIZE Or &H1FF

Const FILE_GENERIC_READ = STANDARD_RIGHTS_READ Or FILE_READ_DATA Or FILE_READ_ATTRIBUTES Or _
                          FILE_READ_EA Or SYNCHRONIZE

Const FILE_GENERIC_WRITE = STANDARD_RIGHTS_WRITE Or FILE_WRITE_DATA Or FILE_WRITE_ATTRIBUTES Or _
                           FILE_WRITE_EA Or FILE_APPEND_DATA Or SYNCHRONIZE

Const FILE_GENERIC_EXECUTE = STANDARD_RIGHTS_EXECUTE Or FILE_READ_ATTRIBUTES Or FILE_EXECUTE Or SYNCHRONIZE


' Identifiers for the IADsAccessControlEntry.AccessMask property for registry
' objects.
Const KEY_QUERY_VALUE = &H1
Const KEY_SET_VALUE = &H2
Const KEY_CREATE_SUB_KEY = &H4
Const KEY_ENUMERATE_SUB_KEYS = &H8
Const KEY_NOTIFY = &H10
Const KEY_CREATE_LINK = &H20
Const KEY_WOW64_32KEY = &H200
Const KEY_WOW64_64KEY = &H100
Const KEY_WOW64_RES = &H300

Const KEY_READ = ((STANDARD_RIGHTS_READ Or KEY_QUERY_VALUE Or KEY_ENUMERATE_SUB_KEYS Or KEY_NOTIFY) And _
                  (Not SYNCHRONIZE))

Const KEY_WRITE = ((STANDARD_RIGHTS_WRITE Or KEY_SET_VALUE Or KEY_CREATE_SUB_KEY) And (Not SYNCHRONIZE))

Const KEY_EXECUTE = ((KEY_READ) And (Not SYNCHRONIZE))

Const KEY_ALL_ACCESS = ((STANDARD_RIGHTS_ALL Or KEY_QUERY_VALUE Or KEY_SET_VALUE Or KEY_CREATE_SUB_KEY Or _
                         KEY_ENUMERATE_SUB_KEYS Or KEY_NOTIFY Or KEY_CREATE_LINK) And (Not SYNCHRONIZE))
    

' Identifiers for the IADsAccessControlEntry.AceFlags property for file and
' file share objects.
Const OBJECT_INHERIT_ACE = &H1
Const CONTAINER_INHERIT_ACE = &H2
Const NO_PROPAGATE_INHERIT_ACE = &H4
Const INHERIT_ONLY_ACE = &H8
Const INHERITED_ACE = &H10
    

' Identifiers for the IADsAccessControlEntry.Flags property.
Const ACE_OBJECT_TYPE_PRESENT = 1
Const ACE_INHERITED_OBJECT_TYPE_PRESENT = 2