Apply(ApplyByHierarchy: Boolean);
ApplyByHierarchy. Параметр, определяющий будут ли установлены параметры безопасности всех дочерних объектов в соответствии с параметрами безопасности текущего объекта.
Если передавать значение True, то для всех дочерних объектов параметры безопасности будут установлены в соответствии с параметрами текущего объекта.
Если передавать значение False, то параметры будут применены только для текущего объекта, но они будут распространяться на все дочерние объекты, для которых флагу Flags установлено значение SecurityDescriptorFlags.AutoInherited.
Метод Apply осуществляет выход из режима редактирования с сохранением всех изменений параметров безопасности объекта.
Для выполнения примера предполагается наличие в репозитории объекта с идентификатором "Obj_1".
Sub Main;
Var
MB: IMetabase;
ObjDesc: IMetabaseObjectDescriptor;
SecDesc: ISecurityDescriptor;
AcessCL: IAccessControlList;
ACE: IAccessControlEntry;
Sec: IMetabaseSecurity;
SS: ISecuritySubject;
Sid: ISid;
Begin
MB := MetabaseClass.Active;
ObjDesc := MB.ItemById("Obj_1");
SecDesc := ObjDesc.SecurityDescriptor;
Sec := MB.Security;
SS := Sec.AllUsers.Item(10);
Sid := SS.Sid;
SecDesc.Edit;
AcessCL := SecDesc.Acl;
ACE := AcessCL.AddAce(AceType.AccessAllowed, Sid, 131071);
SecDesc.Apply(False);
End Sub Main;
После выполнения примера в параметрах управления доступом для указанного объекта будет добавлен пользователь. В дополнительных параметрах безопасности ему будут назначены разрешения в соответствии с маской "131071" (Полный доступ). Данные изменения будут применены только для указанного объекта.
См. также: