Absolute und Self-Relative Sicherheitsbeschreibungen
Ein Sicherheitsdeskriptor kann entweder im absoluten oder selbstrelativen Format vorliegen. Im absoluten Format enthält ein Sicherheitsdeskriptor Zeiger auf seine Informationen, nicht auf die Informationen selbst. Im selbstrelativen Format speichert ein Sicherheitsdeskriptor eine SECURITY_DESCRIPTOR-Struktur und zugehörige Sicherheitsinformationen in einem zusammenhängenden Speicherblock. Rufen Sie die GetSecurityDescriptorControl-Funktion auf, und überprüfen Sie das SE_SELF_RELATIVE-Flag des SECURITY_DESCRIPTOR_CONTROL-Parameters , um zu bestimmen, ob ein Sicherheitsdeskriptor selbst relativ oder absolut ist. Sie können die Funktionen MakeSelfRelativeSD und MakeAbsoluteSD zum Konvertieren zwischen diesen beiden Formaten verwenden.
Das absolute Format ist nützlich, wenn Sie einen Sicherheitsdeskriptor erstellen und Über Zeiger auf alle Komponenten verfügen, z. B. wenn Standardeinstellungen für die Besitzer-, Gruppen- und Ermessens-ACL verfügbar sind. In diesem Fall können Sie die InitializeSecurityDescriptor-Funktion aufrufen, um eine SECURITY_DESCRIPTOR-Struktur zu initialisieren, und dann Funktionen wie SetSecurityDescriptorDacl aufrufen, um dem Sicherheitsdeskriptor ACL- und SID-Zeiger zuzuweisen.
Im selbstrelativen Format beginnt ein Sicherheitsdeskriptor immer mit einer SECURITY_DESCRIPTOR-Struktur , aber die anderen Komponenten des Sicherheitsdeskriptors können der Struktur in beliebiger Reihenfolge folgen. Anstatt Speicheradressen zu verwenden, werden die Komponenten des Sicherheitsdeskriptors durch Offsets vom Anfang des Deskriptors identifiziert. Dieses Format ist nützlich, wenn ein Sicherheitsdeskriptor auf einem Datenträger gespeichert, über ein Kommunikationsprotokoll übertragen oder in den Arbeitsspeicher kopiert werden muss.
Mit Ausnahme von MakeAbsoluteSD verwenden alle Funktionen, die einen Sicherheitsdeskriptor zurückgeben, dies im selbstrelativen Format. Sicherheitsbeschreibungen, die als Argumente an eine Funktion übergeben werden, können entweder eine selbstrelative oder absolute Form aufweisen. Weitere Informationen finden Sie in der Dokumentation für die Funktion.